gpt4 book ai didi

python - 从 Django Queryset 获取值列表的最有效方法

转载 作者:行者123 更新时间:2023-11-28 21:23:44 25 4
gpt4 key购买 nike

我可以看到很多不同的选择来执行此操作,并希望获得有关最有效或“最佳实践”方法的反馈。

我得到一个带有 filter() 的 Django 查询集

c_layer_points = models.layer_points.objects.filter(location_id=c_location.pk,season_id=c_season.pk,line_path_id=c_line_path.pk,radar_id=c_radar.pk,layer_id__in=c_layer_pks,gps_time__gte=start_gps,gps_time__lte=stop_gps)

此查询集可能非常大(数十万行)。

现在需要做的是转换为列表并编码为 JSON。

选项(我在搜索中看到的):

  1. 遍历查询集

例子:

gps_time = [lp.gps_time for lp in c_layer_points];
twtt = [lp.twtt for lp in c_layer_points];
  1. 使用 values() 或 values_list()
  2. 使用迭代器()

最后我想把json编码成这样的格式:

{'gps_time':[list of all gps times],'twtt',[list of all twtt]}

任何有关执行此操作的最佳方法的提示都将非常有用,谢谢!

最佳答案

您可能无法从 ORM 中获取所需的格式。但是,您可以高效地执行以下操作:

c_layer_points = models.layer_points.objects.filter(
location_id=c_location.pk,
season_id=c_season.pk,
line_path_id=c_line_path.pk,
radar_id=c_radar.pk,
layer_id__in=c_layer_pks,
gps_time__gte=start_gps,
gps_time__lte=stop_gps
).values_list('gps_time', 'twtt')

现在将元组拆分为两个列表:(元组拆包)

split_lst = zip(*c_layer_points)    
dict(gps_time=list(split_lst[0]), twtt=list(split_lst[1]))

关于python - 从 Django Queryset 获取值列表的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16992134/

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