diff --git a/tortoise/models.py b/tortoise/models.py index d195fc0b7..0514d837d 100644 --- a/tortoise/models.py +++ b/tortoise/models.py @@ -38,6 +38,7 @@ from tortoise.fields.relational import ( BackwardFKRelation, BackwardOneToOneRelation, + RelationalField, ForeignKeyFieldInstance, ManyToManyFieldInstance, ManyToManyRelation, @@ -276,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() @@ -618,6 +625,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