谁有JQuery完整的视频教程,800分相送
本人要一套JQuery视频教程,满意的话,800分相送,
最满意答案
你的问题与日期无关。 简单来说,即使使用DjangoJSONEncoder类,甚至使用
values()
,查询集本身也不是直接可序列化的。 你将得到完全相同的结果,而模型没有日期时间字段。你应该在Django中进行
serializers
是使用serializers
:from django.core import serializers output = serializers.serialize('json', MyModel.objects.all())
但毫无疑问,你正试图避免这种情况,因为输出格式非常复杂。 相反,我通常使用'python'序列化程序转换为字典,然后转储到json:
temp_output = serializers.serialize('python', MyModel.objects.all()) output = json.dumps(temp_output, cls=DjangoJSONEncoder)
Your issue has nothing to do with datetimes. It's simply that querysets are not by themselves directly serializable, even with the DjangoJSONEncoder class and even using
values()
. You'll get exactly the same result with a model with no datetime fields at all.The way you're supposed to do serialization in Django is to use
serializers
:from django.core import serializers output = serializers.serialize('json', MyModel.objects.all())
But no doubt you're trying to avoid that because the output format is so unnecessarily complex. Instead, I usually use the 'python' serializer to convert to a dict, then dump to json:
temp_output = serializers.serialize('python', MyModel.objects.all()) output = json.dumps(temp_output, cls=DjangoJSONEncoder)
相关问答
更多-
Django在QuerySet / Dict中将日期时间序列化为json(Django serialize datetime to json in QuerySet/Dict)[2023-02-13]
你的问题与日期无关。 简单来说,即使使用DjangoJSONEncoder类,甚至使用values() ,查询集本身也不是直接可序列化的。 你将得到完全相同的结果,而模型没有日期时间字段。 你应该在Django中进行serializers是使用serializers : from django.core import serializers output = serializers.serialize('json', MyModel.objects.all()) 但毫无疑问,你正试图避免这种情况,因为输出 ... -
Django核心序列化程序只能序列化查询集。 但是values()不返回queryset ,而是返回ValuesQuerySet对象。 您可以在serialize()方法中指定要在values()中使用的字段,如下所示: from django.core import serializers funds = Fund.objects.all().annotate(total=Count('structure')).order_by('-total') structure = serializers.ser ...
-
在第一个代码段中,分配给变量查询集的对象是(单个)文档( find_one返回文档)。 即从DB 获取文档,并将其存储在内存中。 文档是json可序列化的,因此它可以工作。 在第二个片段中,您分配给queryset的对象是Cursor 。 尚未获取生成的文档,只有在迭代光标时才会获取它们。 游标不是json可序列化的,因为它不代表文档,而是生成文档的生成器 。 所以你可以做的是首先获取所有文档,然后序列化文档列表: >>> queryset = FIRM.find({'_id':ObjectId("52e5 ...
-
ports[0]['fields']['name'] 如果您想要更多地控制序列化格式,您应该查看django-rest-framework。 ports[0]['fields']['name'] If you want more control over the serialization format, you should look at django-rest-framework.
-
另外,由于您似乎在使用Python 2.6,因此您可以直接使用json模块: import json data = json.dumps({'a': 1}) Also, since you seem to be using Python 2.6, you could just use the json module directly: import json data = json.dumps({'a': 1})
-
所以简短的版本是: from django.http import JsonResponse from django.views import generic from .models import Font class FontListAjaxView(generic.View): def get(self, *args, **kwargs): return JsonResponse(data=list(Font.objects.values()), safe=False) ...
-
Django会检查QuerySet是否已被评估过吗?(Does Django checks if a QuerySet has already been evaluated?)[2023-08-11]
此代码执行多个查询的唯一方法是,如果序列化程序包含关于相关字段的数据,则可以进行进一步查询以便检索相关模型的结果。 正如knbk在评论中指出的那样 , 切片未评估的QuerySet通常会返回另一个未评估的QuerySet,但如果使用切片语法的“step”参数,Django将执行数据库查询,并返回一个列表。 切片已经过评估的QuerySet也会返回一个列表。 由于您没有使用步骤,因此切片不是评估查询的操作 The only way that this code would do more than one q ... -
在Django中将ValuesQuerySet对象序列化为json时出现问题(Problems while serializing ValuesQuerySet object to json in django)[2022-06-15]
values()为您提供了一个ValuesQuerySet ,您可以通过将其转换为list并使用json模块进行serializers ,无需在此处涉及Django serializers : import json from task_manager.models import UserTasks data = UserTasks.objects.filter(user__username="root",server_id=2).values("server_id__mnemonic") print j ... -
如何在一次调用中序列化django QuerySet和Django对象?(How to serialize a django QuerySet and a django object in one call?)[2023-10-03]
您不应该将JsonResponse与序列化器一起使用,因为这意味着您将序列化为JSON两次。 你应该做的是将每个对象分别序列化为Python结构,然后将其发送给JsonResponse。 context = { 'question': serializers.serialize('python', [fup.question])[0], 'answers' : serializers.serialize('python', answers) } return JsonResponse(context ... -
实际上, serialize将serialize的格式作为其第一个参数。 通常这是'json'或'xml',但你也可以使用'python',它转换为标准的Python dict。 Actually serialize takes as its first parameter the format to serialize to. Normally this is 'json' or 'xml' but you can also use 'python', which converts to a standa ...