我试图序列化 QuerySet或 Dict对象 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)




