Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django—将queryset序列化为JSON格式的最佳方法_Python_Json_Django - Fatal编程技术网

Python Django—将queryset序列化为JSON格式的最佳方法

Python Django—将queryset序列化为JSON格式的最佳方法,python,json,django,Python,Json,Django,我尝试了两种方法将queryset的字段属性_值序列化为JSON,最快的方法不是我所认为的方法。该字段是已为JSON格式化的字段 例如: print feature.attribute_value >>>{"NOM": "Saguenay - Lac-Saint-Jean", "CODE": "45", "id": "0", "integer": "5"} 第一种方法: 第二种方法: 我认为第二种方法会更快,因为只有字段属性_值被查询,而不是第一种方法中的所有*其他字段,但是

我尝试了两种方法将queryset的字段属性_值序列化为JSON,最快的方法不是我所认为的方法。该字段是已为JSON格式化的字段

例如:

print feature.attribute_value
>>>{"NOM": "Saguenay - Lac-Saint-Jean", "CODE": "45", "id": "0", "integer": "5"}
第一种方法:

第二种方法:

我认为第二种方法会更快,因为只有字段属性_值被查询,而不是第一种方法中的所有*其他字段,但是第一种方法会更快一些。我想知道为什么,以及是否有更好的方法序列化queryset


碰撞

可能是将查询集视为生成器表达式(如所选功能中的功能)比直接将求值强制放入列表更快。在第二个示例中,我希望listfeatures_选择的速度稍微快一点,但我认为这不会有太大的区别。无论如何,这纯粹是猜测,您应该使用实际的分析来确定确切的原因。另外,第一种方法是否始终更快,或者这是一个偶然的测试?第二种方法的数据特征是什么?顺便说一句,您的第一个方法需要一个列表理解数据=[feature.attribute\u features中的feature的值\u selected]。
features_selected = Feature.objects.filter(shapefile__pk=shapefile_id).order_by("id")
data = [feature.attribute_value for feature in features_selected]
jsonData= json.dumps(data)
features_selected = Feature.objects.filter(shapefile__pk=shapefile_id).order_by("id").values_list("attribute_value", flat=True)
jsonData= json.dumps(list(features_selected))