gpt4 book ai didi

django - 基于django orm计算的过滤语句

转载 作者:行者123 更新时间:2023-12-02 06:29:27 24 4
gpt4 key购买 nike

如何在 django orm 中翻译这样的查询?

select id, year, month 
where (year*100 + month) between 201703 and 201801

预先感谢您的帮助

最佳答案

您可以首先创建注释,然后对其进行过滤:

<b>from django.db.models import F</b>

(Modelname.objects
<b>.annotate(yearmonth=F('year')*100+F('month'))</b>
.filter(<b>yearmonth__range=(201703, 201801)</b>))

所以这里我们构造一个注释yearmonth (如果您愿意,可以使用其他名称),并将其等于 year列乘以 100 加上 month柱子。接下来,我们可以过滤该注释,并通过指定 __range 来执行此操作。这里有两个边界。

通常,这适用于执行您在此处执行的操作的任何数据库系统(将列与常数相乘,将两个值相加),以及执行 __range过滤器(在 MySQL 中,这被翻译为 <var> BETWEEN <min> AND <max> )。然而,由于我们使用 Django ORM,如果我们稍后决定使用另一个数据库,查询将被翻译为其他数据库查询语言(当然这是可能的)。

关于django - 基于django orm计算的过滤语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50564905/

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