Django Rest 框架和 JSONField

2023-12-01

给定一个 Django 模型JSON字段,使用序列化和反序列化它的正确方法是什么Django 休息框架?

我已经尝试过创建自定义serializers.WritableField并压倒一切to_native and from_native:

from json_field.fields import JSONEncoder, JSONDecoder
from rest_framework import serializers

class JSONFieldSerializer(serializers.WritableField):
    def to_native(self, obj):
    return json.dumps(obj, cls = JSONEncoder)

    def from_native(self, data):
        return json.loads(data, cls = JSONDecoder)

但是当我尝试使用更新模型时partial=True,JSONField 对象中的所有浮点都变成字符串。


如果您使用的是 Django Rest Framework >= 3.3,则 JSONField 序列化程序为现在包括在内。现在这是正确的方法。

如果您使用的是 Django Rest Framework

如果您使用的是 DRF 3.0 - 3.2 并且无法升级并且不需要序列化二进制数据,请按照以下说明进行操作。

首先声明一个字段类:

from rest_framework import serializers

class JSONSerializerField(serializers.Field):
    """ Serializer for JSONField -- required to make field writable"""
    def to_internal_value(self, data):
        return data
    def to_representation(self, value):
        return value

然后将字段添加到模型中,例如

class MySerializer(serializers.ModelSerializer):
    json_data = JSONSerializerField()

而且,如果您确实需要序列化二进制数据,您始终可以复制官方发布代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django Rest 框架和 JSONField 的相关文章

随机推荐

  • 使用规则或通知自动刷新物化视图

    我对 PostgreSQL 9 3 数据库有一个物化视图 该数据库很少更改 大约每天两次 但当它发生时 我想立即更新其数据 到目前为止 这是我的想法 有一个物化视图mat view它从表中获取数据table1 and table2使用一些连
  • svg图像标签大小

  • Stock 电子表格中未调用可安装的 OnEdit

    我有一个函数 在 Google Apps 脚本中 不称为 onEdit 而是其他函数 并且已将其设置为通过 Google 电子表格上的可安装 onEdit 中的任何编辑事件调用 该电子表格围绕股票并监控投资组合 该功能的目的是在股票触及止损
  • 与列“x.y”关联的外键无法...生成目标列“无”的外键

    我正在使用 SQLAlchemy 和 SQLite 创建我的第一个数据库项目 我想连接两个实体作为关系数据库的关系模型 这是来源 class Models Base tablename models id model Column Inte
  • 如何使div的高度为浏览器窗口的100%

    我有一个有两列的布局 左边div和一个权利div 正确的div有一个灰色的background color 我需要它根据用户浏览器窗口的高度垂直扩展 眼下 background color结束于最后一段内容div 我试过了height 10
  • Spring Boot应用程序启动多次并与logstash断开连接

    我有一个 springboot 应用程序 Spring Boot v1 3 5 RELEASE 它在 docker 上运行 mvnw 它会在 1 2 分钟后 重新启动 并且在第二次启动后 它们不会向 Logstash 发送任何日志 在第一次
  • 2 个 div 柱:固定柱和液体柱。固定的必须是可拆卸的。 Liquid 必须是代码中的第一个

    考虑以下 2 列 html 结构 div div class left some text div div class right some text div div CSS container overflow hidden left f
  • React Router 在构建到 ftp 服务器后不会渲染组件

    我用构建了反应应用程序yarn build 为了让应用程序在我的服务器上运行 我添加了 homepage 到 package json 文件 该应用程序存储在服务器上的一个文件夹中 我使用以下命令访问该应用程序https my url co
  • 允许内容文档(网页)检测我的 Firefox 插件

    在我的 Firefox 插件中 我正在寻找一种安全的方法来让内容代码检测插件本身的存在 理想情况下 我希望最终允许内容代码通过执行以下命令来查询我的插件是否存在 if window navigator my addon the addon
  • 使用 Google Apps 脚本插入括号和引号

    我最近开始为 Google 电子表格编写一些脚本 虽然我没有使用 Javascript 的经验 但我有一个关于 我认为 基本问题的问题 我希望我的脚本将下面显示的数据插入到工作表的单元格中 我应该如何对其进行编码才能使其工作 komorka
  • 创建一条曲线,分别调整加载图像的对比度和亮度

    我有一系列图像 想知道是否有可能用 python 编写一些东西来应用对比度和亮度曲线 如下图所示 正如 Fred 在评论中所述 您可能希望根据您的点创建 Catmull Rom 样条线 然后使用 OpenCV 中的 LUT 进行应用 usr
  • MIPS 递归斐波那契数列

    我在 MIPS 中递归处理堆栈时遇到问题 我明白了这个概念 但我的程序没有按照我的意思做出反应 我的目标是将用户输入作为 n 并打印 n 处的斐波那契数 到目前为止我所拥有的如下 我相当确定问题出在 fib 函数中数字的实际计算中 感谢您的
  • Bootstrap 中心导航栏

    我试图将我的导航栏居中 但一点运气都没有 这里有人知道如何将其居中吗 这是我的代码
  • 下拉列表的value和text属性可以独立使用吗?

    ASP NET 中下拉列表的这两个属性可以独立使用吗 我想找回一个null当用户选择某些文本时的值 我不能 因为它检索Text财产每当Value is null Eg l1 new ListItem Cat null Console Wri
  • 如何将相同程序集的两个版本从两个不同的子文件夹加载到两个不同的域中?

    我正在尝试构建一个小工具来比较一堆程序集中的类型 为此 我创建了两个子文件夹并将各自的 dll 放在那里 Dlls v1 1 Dlls v1 2 where 是应用程序文件夹 我还创建了一个代理对象 public class ProxyDo
  • 在waf中指定不同的编译器

    我想要在以下位置配置多个构建配置 即不同的 C 编译器 waf 我设法这样做了 但对我来说看起来有点臭 我目前该怎么做 我制作不同的环境 然后重置c compiler在加载下一个编译器之前列出 最后我将其重置为所有编译器 def confi
  • Laravel 4 表单生成器自定义字段宏

    我正在尝试创建一个自定义 HTML 5 日期字段以在 laravel 4 框架视图中使用 Form macro datetime function field name return Form label event start Event
  • (Facebook C# SDK) 获取访问令牌时出现问题

    我对 Facebook C SDK 5 0 3 很陌生 这可能就是这个问题的原因 基本上 我试图获取当前用户的个人资料 电子邮件 照片等 在下面您将找到我的两个页面 MyLogin aspx 和landpage aspx 的代码 我使用网络
  • 在嵌套类中声明固定长度的数组

    我有一个 A 类 它有一个嵌套的 B 类 A 类将创建 B 类的 n 个 运行时参数 实例 在 A 的构造函数中 在需要在运行时进行计算之后 我计算一个大小 假设为 s 现在 每个 B 类都会保存一个大小为 s 的数组 但是 我不允许使用
  • Django Rest 框架和 JSONField

    给定一个 Django 模型JSON字段 使用序列化和反序列化它的正确方法是什么Django 休息框架 我已经尝试过创建自定义serializers WritableField并压倒一切to native and from native f