gpt4 book ai didi

python - JSON 使用被调用的值序列化 Django 查询集。我的方法有什么问题吗?

转载 作者:太空狗 更新时间:2023-10-29 21:27:18 25 4
gpt4 key购买 nike

问题是:Django 的序列化器不支持字典,而 simplejson 不支持 Django 查询集。参见 JSON Serializing Django Models with simplejson

我想知道我的解决方案是否有问题。我有类似的东西:

people = People.objects.all().values('name', 'id')
json.dumps(list(people))

我仍然是 Python/Django 的新手。将 QuerySet 转换为列表是个坏主意吗?使用其他主题中建议的 DjangoJSONEncoder 是否更有效?

最佳答案

在我看来,您的解决方案完全有效且非常干净。

如果您需要列表列表(而不是字典列表),您也可以使用:

from django.utils import simplejson

people = People.objects.all().values_list('name', 'id')
simplejson.dumps(list(people))

有时当json输出非常复杂时,我们通常使用带有*render_to_string*函数的json模板,例如:

context = {'people': People.objects.all().values('name', 'id')}
render_to_string('templates/people.json', context, context_instance=RequestContext(request))

模板 people.json 可以是:

[
{% for person in people %}
{"name": {{ person.name }}, "id": {{ person.id }} }
{% if not forloop.last %} , {% endif %}
{% endfor %}
]

但是模板的使用是为比你的更复杂的情况保留的。我认为对于更简单的问题,一个好的解决方案是使用 simplejson.dumps 函数。

关于python - JSON 使用被调用的值序列化 Django 查询集。我的方法有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com