我想将一些数据库对象导出为 JSON。导出格式或多或少与 的格式匹配Example.objects.values(*columns)
,除了每个 dict 还应该包含一个通过调用每个 (Example.objects.all()
即class Example(Model)
实例)上的方法计算的值。
如何生成只有一个数据库查询的合适字典?
我将两个查询(我当前的解决方案)合并为一个的动机是一致性:我们在默认的“已提交读”级别上针对 PostgreSQL 运行 Django,这可能会使我的两个查询返回不一致的数据。(更好的表现也是一个好处,但不是主要动机。)
我看到两条路径:
- 在我的 python 代码中查询对象并将对象转换为字典。
- 查询字典并将字典转换为我的 python 代码中的对象。
哪个更好?我应该注意什么?我如何正确地做任何一个?Django 在幕后做了很多复杂的事情——无论如何,我看到的代码似乎有些复杂——所以我不确定:哪条路径最健壮?
注意:解决方案需要跨越__
查找,即我希望例如{"other_model__pk": 1}
成为可能的输出。快速测试表明django.forms.models.model_to_dict
不这样做。