назначение внешнего ключа для дочернего объекта - PullRequest
2 голосов
/ 15 июня 2019

У меня очень простой вопрос, который я не могу понять. У меня есть следующие модели

class Parent(models.Model):   
     id = models.AutoField(primary_key=True)
     title = models.CharField(max_length=64)

class Child(models.Model):
      boardid = models.ForeignKey(Parent,on_delete=models.CASCADE,related_name="child")
      id = models.AutoField(primary_key=True)
      title = models.CharField(max_length=128)

сериализаторы

class ParentSerializer (serializers.ModelSerializer):
    class Meta:
        model = Parent
        fields = ('__all__')

class ChildSerializer (serializers.ModelSerializer):

    class Meta:
       model = Child
       fields = ('id','title')

и простой createAPIview для детей

class ChildCreateView(CreateAPIView):
      queryset= Child.objects.all()
      serializer_class = ChildSerializer

Когда я называю этот URL / API / родитель / 1 / ребенок / создать Я хочу предварительно заполнить идентификатор доски внешних ключей идентификатором 1 и создать дочерний объект с остальной информацией, которую я буду предоставлять в теле. Как это возможно для достижения

1 Ответ

1 голос
/ 15 июня 2019

Сначала добавьте поле boardid в ChildSerializer,

class ParentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Parent
        <b>fields = '__all__' # no need of "()"</b>


class ChildSerializer(serializers.ModelSerializer):
    class Meta:
        model = Child
        fields = ('id', 'title', <b>'boardid'</b>)

Затем используйте следующую полезную нагрузку json для создания экземпляра.

{
    "title":"child title",
    "boardid":123,
    ... other data
}
...