我正在尝试创建一个只有一个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的新手,这是一个太简单的问题,请接受我的意见。
答案 0 :(得分:2)
这是您发送数据的方式:
s = DataSerializer(data={"data" : {"name": "Tom"}})
也许,您在命名jsonfield`data'时的选择使您在这里有些困惑。
构造串行化器时,参数data
只是用于设置要序列化的数据的参数。
在调用is_valid
时,它将查看传递给序列化程序的数据,并在这种情况下尝试查找名为data
的JSONField。
如果将其重命名为jsondata,它将尝试在数据中查找jsondata。在这种情况下,您可以这样做:
s = DataSerializer(data={"jsondata" : {"name": "Tom"}})
希望很清楚。