Serialization Django rest:使用2个外键发送POST请求

Serialization Django rest:使用2个外键发送POST请求,serialization,django-rest-framework,foreign-keys,django-rest-viewsets,Serialization,Django Rest Framework,Foreign Keys,Django Rest Viewsets,我想在序列化程序中发布一个数据,具有2个ForeignKey 我有这些型号: class Child(models.Model): first_name = models.CharField(max_length=40) description = models.CharField(max_length=40) class Parent(models.Model): name = models.CharField(max_length=20) pet = mod

我想在序列化程序中发布一个数据,具有2个ForeignKey
我有这些型号:

class Child(models.Model):
    first_name = models.CharField(max_length=40)
    description = models.CharField(max_length=40)

class Parent(models.Model):
    name = models.CharField(max_length=20)
    pet = models.ForeignKey(pet)
    child = models.ForeignKey(Child, related_name='boys')

class Pet(models.Model):
    kind = models.CharField(max_length=40)
------------------,
Class PetSerializer(ModelSerializer):
    class Meta:
        model = Pet
        fields = ('kind',)

class ParentSerializer(ModelSerializer):    
    pet = PetSerializer(many=True): 
    class Meta:
        model = Parent
        fields = ('name', 'pet')

class ChildSerializer(ModelSerializer):
    boys = ParentSerializer() 

    class Meta:
        model = Child
        fields = ('first_name', 'boys')
我的第一个问题:是否有可能得到如下输出:

{
    "first_name": "Peter",
    "boys": [
      {
        "name": "Bill",
         "kind": "dog"
        }
      ]
   }
我的第二个问题:我正试图通过使用以下方法发送数据以创建新模型:




    def create(self, validated_data):
        clean_data = validated_data.pop('boys')
        child = Child.objects.create(**validated_data)
        for data in clean_data:
            Parent.objects.create(child=child, **data)
        return child
But I got this error: TypeError: Direct assignment to the reverse side of a related set is prohibited. Use boys.set() instead.

仅针对第一个问题,您可以在
ParentSerializer
类中使用:

类ParentSerializer(ModelSerializer): kind=serializers.CharField(source='pet.kind'): 类元: 模型=父 字段=('name','kind')
is
boys
is
Child
model的外键?boys是相关的\u name:属性指定从子模型返回到父模型的反向关系的名称。对于第二个问题,请提供您的
验证的\u数据
并检查您的代码,了解
跟踪\u数据
varibale。错误中的
用户名也在哪里。请把你的第二个问题说清楚。对不起。是男孩们