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

2024-04-20 05:38:35 发布

您现在位置:Python中文网/ 问答频道 /正文

在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中的对象列表。你知道吗

模型2字段输入请求.数据就像

[
    {
        "name":"abcde",
        "display_name":"ghvhgvhg",
        "model1":1
    },
    {
        "name":"abcde", 
        "display_name":"ghvhgvhg",
        "model1":1
    }
]

但是当我打印的时候序列化程序.data检查后serializer.u是否有效()显示模型2:[]在serailizer.data文件. 你知道吗

为什么我的数据在执行数据验证时丢失?你知道吗


Tags: 数据对象nameselfdatamodelsdisplayclass
1条回答
网友
1楼 · 发布于 2024-04-20 05:38:35

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

所以您的字段model2 = Model2Serializer(many=True)是错误的,因为Model3实例永远不会有“许多Model2实例”

相关问题 更多 >