gpt4 book ai didi

Django 将日期时间序列化为 QuerySet/Dict 中的 json

转载 作者:行者123 更新时间:2023-12-04 16:29:40 29 4
gpt4 key购买 nike

我试图序列化 QuerySetDict对象 datetime.date对象的方式如下:

方式#1:

json.dumps(MyModel.objects.values())

引发错误:

Exception Value: [{'date': datetime.date(2012, 5, 26), 'time': datetime.time(0, 42, 27)}] is not JSON serializable



方式#2:
json.dumps(MyModel.objects.values(), cls=DjangoJSONEncoder)

还会引发错误:

Exception Value: [{'date': datetime.date(2012, 5, 26), 'time': datetime.time(0, 42, 27)}] is not JSON serializable



方式#3:
json.dumps(MyModel.objects.all(), cls=DjangoJSONEncoder)

异常值:[< MyModel: MyModel object>] 不是 JSON 可序列化的

方式#4:
serializers.serialize('json', MyModel.objects.all())

引发错误:

Exception Value: 'str' object has no attribute '_meta'



如何在 Django 中将带有日期时间字段的对象序列化为 JSON?

最佳答案

您的问题与日期时间无关。只是查询集本身不能直接序列化,即使使用 DjangoJSONEncoder 类,甚至使用 values() .对于完全没有日期时间字段的模型,您将获得完全相同的结果。

您应该在 Django 中进行序列化的方式是使用 serializers :

from django.core import serializers
output = serializers.serialize('json', MyModel.objects.all())

但毫无疑问,您正试图避免这种情况,因为输出格式过于复杂。相反,我通常使用“python”序列化程序转换为 dict,然后转储为 json:
temp_output = serializers.serialize('python', MyModel.objects.all())
output = json.dumps(temp_output, cls=DjangoJSONEncoder)

关于Django 将日期时间序列化为 QuerySet/Dict 中的 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10764909/

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