Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架在运行验证后将相关对象列表转换为空列表_Python_Django_Django Rest Framework - Fatal编程技术网

Python Django Rest框架在运行验证后将相关对象列表转换为空列表

Python Django Rest框架在运行验证后将相关对象列表转换为空列表,python,django,django-rest-framework,Python,Django,Django Rest Framework,在django rest框架中创建子对象时,我正在尝试创建相关对象或父对象的列表 My Models are like this class Model2(models.Model): model1 = models.ForeignKey(Model1) name = models.CharField(max_length=100) display_name = models.CharField(max_length=100) class Model3(model

在django rest框架中创建子对象时,我正在尝试创建相关对象或父对象的列表

My Models are like this  

class Model2(models.Model):
    model1 = models.ForeignKey(Model1)
    name = models.CharField(max_length=100)
    display_name = models.CharField(max_length=100)

class Model3(models.Model):
    model1 = models.ForeignKey(Model1)
    kind = models.ForeignKey(Kind)
    model2 = models.ForeignKey(Model2)
我的序列化程序类是:

class Model2Serializer(serializers.ModelSerializer):
    class Meta:
        model = Model2

class Model3Serializer(serializers.ModelSerializer):
    model2 = Model2Serializer(many=True)
class Meta:
    model = Model3
    fields = ('model1', 'model2')
我的看法是:

class Model3View(generics.CreateAPIView):  
    serializer_class = Model3Serializer
    queryset = Model3.objects.all()

    def create(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        # self.perform_create(serializer)
        print serializer.data
        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
我正在发送字段名model2中的对象列表

request.data中的model2字段类似

[
    {
        "name":"abcde",
        "display_name":"ghvhgvhg",
        "model1":1
    },
    {
        "name":"abcde", 
        "display_name":"ghvhgvhg",
        "model1":1
    }
]
但当我在检查serializer.data是否有效后打印serializer.data时,它会在serailizer.data中显示model2:[]

为什么我的数据在对数据执行验证时丢失?

这是因为Model3只能有Model2的一个实例,Model2可以由Model3的多个实例指向

因此,您的字段model2=Model2Serializermany=True是错误的,因为Model3实例可能永远不会有很多model2实例