Skip to content

using db_column_name with ForeignKey breaks objects().select(...) when using prefetch #1107

Open
@jessemcl-flwls

Description

@jessemcl-flwls

Thank you for addressing this issue so quickly: #1101

Sadly, this rabbit hole might go a bit deeper. With the above fix, I immediately ran into the next possibly related thing:

Again, if I have two tables with a foreign key relationship between them, and I specify the relationship using a custom db_column_name, eg:

class FooTable(Table, tablename="foo", schema="public"):
    id = Varchar(length=20, primary_key=True, null=False)
    name = Varchar(length=64, unique=True, null=False)

class BarTable(Table, tablename="bar", schema="public"):
    id = Varchar(length=20, primary_key=True, null=False)
    foo = ForeignKey(references=FooTable, null=False, db_column_name="foo_id")

Then when I try to query this relationship using prefetch:

bar = await BarTable.objects(BarTable.foo).where(BarTable.foo.id == "abc").first()

Then I get an error saying there is no matching column found.

If I leave out the prefetch, then it works without error, with the resulting dict containing the property:

  "foo": "abc"

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions