我没有在APIVi中得到数据

2024-10-02 00:44:37 发布

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

在我看来:

data = {
    "user":user_dict,  # the user_dict have data.
    "account":account_dict  # the account_dict have data too.
      }

serializer = UserInfoSerializer(data=data)
is_valid = serializer.is_valid()  # the `is_valid` is True

return Response(data=serializer.validated_data, status=HTTP_200_OK)

但是当我访问这个APIView时,我什么也得不到。你知道吗

enter image description here

UserInfoSerializer代码如下:

class UserInfoSerializer(Serializer):
    user = serializers.DictField(read_only=True)
    account = serializers.DictField(read_only=True)

Tags: thetrueonlyreaddataishaveaccount
1条回答
网友
1楼 · 发布于 2024-10-02 00:44:37

发生这种情况的原因是序列化程序.DictField应该被使用。创建dict字段时,需要告诉序列化程序字典中值的类型。例如,假设“user”是这样的字典:{"user1": "bob", "user2": "alice"}。然后,您需要告诉序列化程序子值是字符串或CharField:

class UserInfoSerializer(Serializer):
    user = serializers.DictField(read_only=True, child=serializers.CharField())

如果帐户是{"account1": 1, "account2": 2},那么您可以这样做:

class UserInfoSerializer(Serializer):
    user = serializers.DictField(read_only=True, child=serializers.CharField())
    account = serializers.DictField(read_only=True, child=serializers.IntegerField())

我在本地进行了测试,似乎解决了这个问题。您可以阅读有关如何使用djangos docs here中DictField的更多信息。你知道吗

如果您的数据没有一致的单一类型的值,我建议使用JSONField,您可以阅读here。它看起来是这样的:

class UserInfoSerializer(Serializer):
    user = serializers.JSONField()
    account = serializers.JSONField()

祝你好运!你知道吗

相关问题 更多 >

    热门问题