django - Django Rest Framework 的序列化器中的 JSONField
问题描述
我正在尝试创建一个只有一个 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 的新手。
解决方案
这是您必须发送数据的方式:
s = DataSerializer(data={"data" : {"name": "Tom"}})
也许,您选择将您的 jsonfield 命名为“数据”让您有点困惑。
构造序列化器时的参数data
只是一个用于设置要序列化的数据的参数。
当您调用 时is_valid
,它会查看传递给序列化程序的数据并尝试查找data
在这种情况下命名的 JSONField。
如果您将其重命名为 jsondata,它会尝试在数据中查找 jsondata。在这种情况下,你会这样做:
s = DataSerializer(data={"jsondata" : {"name": "Tom"}})
希望很清楚。
推荐阅读
- tsql - 将数据类型 varchar 转换为数字但 ISNUMERIC = 1 时出错
- javascript - 自合并对象 - lodash
- python - python中的if语句和输入
- elasticsearch - 如何查询弹性搜索连接字段名称?
- javascript - 使用事件(作为函数)v4 的问题
- java - 在后台服务中每 n 分钟运行一次任务
- string - 在 Delphi 10.3 中从字符串中减去掩码
- wordpress - 以前是子域的域和子目录的站点地图
- ios - 如何在 Chromecast (iOS) 上切换 .mkv 文件中的音轨
- reactjs - 使用 TypeScript 和 React 的联合类型