djangorestframework ModelSerializer序列化模型对象,但数据为空{}

时间:2020-03-23 20:03:44

标签: python django django-rest-framework

我使用djangorestframework,当我序列化模型对象列表时,serializer.data是有效的,但是当我仅序列化模型对象时,serializer.data为空{},为什么?

型号:

class WindowInfo(models.Model):
    user = models.ForeignKey(WxAccount, on_delete=models.DO_NOTHING)
    add_time = models.DateTimeField(default=datetime.datetime.now)

ModelSerializer:

class WindowInfoSerializer(serializers.ModelSerializer):
    class Meta:
        model = WindowInfo
        fields = '__all__'enter code here

视图:

class WindowInfoViewset(viewsets.GenericViewSet, mixins.CreateModelMixin):
    serializer = WindowInfoSerializer
    queryset =WindowInfo.objects.all()
    authentication_classes = [CustomerAuthentication]

    def create(self, request: Request, *args, **kwargs):
        window_info_list = WindowInfo.objects.all()
        window_info = window_info_list[0]

        window_info_list = WindowInfoSerializer(data=window_info_list, many=True)
        window_info_list.is_valid()
        window_info = WindowInfoSerializer(data=window_info, many=False)
        window_info.is_valid()

        print("window_info_list.data:")
        print(window_info_list.data)
        print("window_info.data:")
        print(window_info.data)

然后使用控制台:

window_info_list.data:
[OrderedDict([('id', 1), ('add_time', '2020-03-24T03:43:13.091961'), ('user', 1)])]
window_info.data:
{}

为什么window_info.data是{}?

1 个答案:

答案 0 :(得分:0)

序列化对象时,必须将对象作为第一个参数传递

window_info = WindowInfoSerializer(data=window_info)
相关问题