В настоящее время я пытаюсь выяснить, как связать два поля идентификатора двух разных моделей из существующей базы данных без сценариев миграции.
Я рассмотрел много, много разных решений;Поля models.ForeignKey, models.ManyToOneRel, гиперссылки на поля в сериализаторе, PrimaryKeyRelatedField в сериализаторе, кажется, что каждое из них соответствует модели другой модели или другому сеансу и не совпадает между двумя конкретными полями идентификатора в двух разных моделях.
Это код, с которым я сейчас работаю;он использует rsinger86 drf-flex-fields , чтобы разрешить спроектированные расширяемые поля.
class Cats(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid3, editable=False)
hatId = models.UUIDField(primary_key=False, default=uuid.uuid3, editable=False)
name = models.TextField()
class Hats(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid3, editable=False)
name = models.TextField()
class CatsSerializer(FlexFieldsModelSerializer):
hat = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model = Cats
fields = [
'id',
'hatId',
'name'
]
expandable_fields = {
'hat': (HatsSerializer, {'source': 'hat', 'fields': ['name']})
}
class HatsSerializer(FlexFieldsModelSerializer):
class Meta:
model = Hats
fields = [
'id',
'name'
]
Я надеюсь, что в конечном итоге я смогу запросить кошку и использовать параметр расширения расширяемых полей, чтобы включить эти кошкисоответствующая шапка в ответе.