【问题标题】:Query Set Annotate with two different query setsQuery Set Annotate 使用两个不同的查询集
【发布时间】:2018-11-20 11:09:24
【问题描述】:

我不熟悉使用 django orm 操作加入两个查询集。这是我的要求。我有两个数据集。第一个数据集有三列,即日期时间、col1,第二个数据集有 start_date、end_date、week_num。输出数据应该是 weeknum, col1。如何使用 django 将这两个模型结合起来?

第一个数据集:

datetime              col1
2018-10-04 08:00:00   10

第二个数据集:

start_date            end_date               week_num
2018-10-04 07:00:00   2018-10-11 07:00:00    42

输出数据集:

weeknum              col1
42                    10

到目前为止我的代码:

qs1=models.dataset1.objects.all()
qs2=models.dataset2.objects.all()

我知道我只是放入基本数据集,但我无法继续前进。

对此的 SQL 查询如下:

 select weeknum, col1 from datatset1 d1, dataset2 d2 where 
 d1.datettime>d2.start_date and d1.datetime<d2.end_date; 

非常感谢您对此的任何帮助。谢谢。

【问题讨论】:

    标签: django django-rest-framework django-queryset


    【解决方案1】:

    您将无法使用查询集进行组合,因为它们被设计为特定于模型(代理和抽象模型除外)。

    但是,您可以使用列表推导来组合它们,或者使用 itertools.chain(更高效)来组合来自查询集的两个结果。

    但是,您会失去查询集的“惰性”,这可能会在以后对性能产生影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2018-06-27
      • 1970-01-01
      相关资源
      最近更新 更多