Django Rest Framework的序列化器中的JSONField

时间:2018-08-23 06:21:55

标签: django django-rest-framework

我正在尝试创建一个只有一个JSONField的序列化器

class DataSerializer(serializers.Serializer):
    data = serializers.JSONField()

当我尝试在shell中以-

形式使用此序列化器时
>>> s = DataSerializer(data={"name": "Tom"})
>>> s.is_valid()
False
>>> s.errors
{'data': [ErrorDetail(string='This field is required.', code='required')]}

我不知道我在做什么错。如果这是我使用DRF的新手,这是一个太简单的问题,请接受我的意见。

1 个答案:

答案 0 :(得分:2)

这是您发送数据的方式:

s = DataSerializer(data={"data" : {"name": "Tom"}})

也许,您在命名jsonfield`data'时的选择使您在这里有些困惑。

构造串行化器时,参数data只是用于设置要序列化的数据的参数。

在调用is_valid时,它将查看传递给序列化程序的数据,并在这种情况下尝试查找名为data的JSONField。

如果将其重命名为jsondata,它将尝试在数据中查找jsondata。在这种情况下,您可以这样做:

s = DataSerializer(data={"jsondata" : {"name": "Tom"}})

希望很清楚。