From ed8d9a488e0222a5cef89146df52d7d6e5d8937c Mon Sep 17 00:00:00 2001 From: Tuffy Date: Thu, 30 Mar 2023 10:03:56 +0800 Subject: [PATCH 1/2] fix: Fix incorrect use of pk_attr instead of db_pk_column when using RelationalField as the primary key. --- tortoise/models.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tortoise/models.py b/tortoise/models.py index d195fc0b7..5d05a2814 100644 --- a/tortoise/models.py +++ b/tortoise/models.py @@ -38,6 +38,7 @@ from tortoise.fields.relational import ( BackwardFKRelation, BackwardOneToOneRelation, + RelationalField, ForeignKeyFieldInstance, ManyToManyFieldInstance, ManyToManyRelation, @@ -618,6 +619,8 @@ def __search_for_field_attributes(base: Type, attrs: dict) -> None: meta.pk = fields_map.get(pk_attr) # type: ignore if meta.pk: meta.db_pk_column = meta.pk.source_field or meta.pk_attr + if isinstance(meta.pk, RelationalField) and meta.pk.source_field is None: + meta.db_pk_column = f"{meta.db_pk_column}_id" meta._inited = False if not fields_map: meta.abstract = True From aef276506b1b198c9480c8b5bcec5a9012888ba0 Mon Sep 17 00:00:00 2001 From: Tuffy Date: Thu, 30 Mar 2023 10:40:12 +0800 Subject: [PATCH 2/2] fix: Fix the issue where the pk filter condition is not available when using RelationalField(pk=True). --- tortoise/models.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tortoise/models.py b/tortoise/models.py index 5d05a2814..0514d837d 100644 --- a/tortoise/models.py +++ b/tortoise/models.py @@ -277,6 +277,12 @@ def add_field(self, name: str, value: Field) -> None: field_filters = get_filters_for_field( field_name=name, field=value, source_field=value.source_field or name ) + if value.pk: + field_filters.update( + get_filters_for_field( + field_name="pk", field=value, source_field=value.source_field or name + ) + ) self._filters.update(field_filters) self.finalise_fields()