基于比较日期的Django查询集[重复]
Posted
技术标签:
【中文标题】基于比较日期的Django查询集[重复]【英文标题】:Django queryset based on comparing dates [duplicate] 【发布时间】:2012-08-05 08:22:23 【问题描述】:可能重复:How do you select between two dates with Django
我的 django 模型包含 2 个字段 - c_date 和 c_int。因为我在创建查询方面真的很弱......有没有办法从数据库中只获取那些满足这一点的记录:c_date+timedelta(days=c_int)=date.today
?我想在数据库级别执行此操作,因为它比获取所有记录并比较所有记录的日期要快。
【问题讨论】:
并不是因为比较是基于 DB 中的两个值 【参考方案1】:您应该使用QuerySet.extra
来构造复杂的WHERE
子句。特别是针对您的要求,您应该检查您选择的数据库的 DATEADD
函数的可用性。
虽然,根据您的数据集有多大以及您需要多久运行一次此查询,另一种选择是进行迁移,并在创建实例时立即计算日期和偏移量的总和——您可以创建自定义 ModelForm
以继续允许用户指定 c_int
作为天数的偏移量。
【讨论】:
就是这样!不幸的是,在我的服务器中没有 DATEADD 函数,但我使用更简单的 SQL 查询来处理它:SELECT * FROM mytable WHERE (c_date+INTERVAL c_int)="2012-08-02";以上是关于基于比较日期的Django查询集[重复]的主要内容,如果未能解决你的问题,请参考以下文章