json - 使用 .values() 序列化模型,但也包括 ManyToMany 相关字段
问题描述
class Book(models.Model):
user = models.ForeignKey(Profile, on_delete=models.CASCADE)
tags = models.ManyToManyField(Tag, related_name="books")
我有预先存在的 JavaScript 代码,这些代码适用于我从 django 提供的输入,如下所示:
json.dumps(list(Book.objects.all().values()), cls=DjangoJSONEncoder)
list(Book.objects.all().values())
给了我一个字典数组,我的整个前端代码都基于这些字典。
[{ "user": 1 }, { ... }, ... ]
但是,现在我添加了 tags 属性。我期待在我的字典中找到该tags
属性,但没有:显然,Django 默认情况下不会序列化 ManyToMany 管理器。
提供的解决方案是这样的:
from django.core import serializers
serializers.serialize("json", Book.objects.all())
但是,它会输出一个完全不同形式的字典,其中我的所有模型属性都在一个fields
参数内。
[{"model": "Main.book", "pk": 1, "fields": { "user": ... }]
在维护表单的同时,我怎样才能拥有tags
像 with 这样的字段?我是否必须完全重写我的前端代码才能使用格式或是否有更简单的解决方案?serializers.serialize
.values()
serializers.serialize
解决方案
推荐阅读
- vb.net - 组合框在 VB.net 中以 winform 显示两次
- sql - Postgresql 使用 CASE 根据其他数据的存在返回不同的数据
- php - OAUTH:Facebook API 因重定向 URL 参数错误而引发错误
- javascript - 如何编写一个Javascript函数来按顺序从字符串中获取所有回文子序列?
- node.js - AgoraIO Web + Heroku
- matlab - 从符号微分的结果创建函数句柄的问题
- c++ - 嵌入式 C++ - 虚拟析构函数和堆内存
- autodesk-forge - 如何从模型衍生 API 元数据创建模型浏览器,如对象
- chart.js - 如何仅在最后一个栏显示 chartjs 数据标签?
- kotlin - 从 Gradle Fat Jar 加载 Kotlin 主类失败