С помощью Django REST Framework стандартный ModelSerializer позволит назначать или изменять отношения модели ExternalKey POST-идентификатором в виде Integer.
Какой самый простой способ получить это поведение из вложенного сериализатора?
Заметьте, я говорю только о назначении существующих объектов базы данных, а не вложенном создании.
В прошлом я обманул это с дополнительными полями "id" в сериализаторе и с пользовательскими методами create
и update
, но это такая, казалось бы, простая и частая проблема для меня, что мне любопытно знать лучший способ.
class Child(models.Model):
name = CharField(max_length=20)
class Parent(models.Model):
name = CharField(max_length=20)
phone_number = models.ForeignKey(PhoneNumber)
child = models.ForeignKey(Child)
class ChildSerializer(ModelSerializer):
class Meta:
model = Child
class ParentSerializer(ModelSerializer):
# phone_number relation is automatic and will accept ID integers
children = ChildSerializer() # this one will not
class Meta:
model = Parent