【发布时间】:2017-05-01 23:50:58
【问题描述】:
我在使用 DjangoORM 在我的数据库中查询所需结果时遇到问题。
这是我的模型。
class HeatWatchList(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
related_name='watchlist_users', on_delete=models.CASCADE)
heat = models.OneToOneField(Heat, related_name='heat_watch_list',
on_delete=models.CASCADE)
next_date_from = models.DateTimeField()
next_date_to = models.DateTimeField()
我想获取今天日期在 next_date_from 和 next_date_to 字段之间的所有记录。
我可以在原始 sql 中轻松做到这一点:
SELECT
*
FROM
farm_management_db.heat_heatwatchlist
WHERE
DATE(now()) BETWEEN DATE(next_date_from) AND DATE(next_date_to);
这是我迄今为止尝试过的,但我没有得到任何记录:
HeatWatchList.objects.filter(
next_date_from__date__gte=datetime.now().date(),
next_date_to__date__lte=datetime.now().date()
)
【问题讨论】:
-
datetime.now() 不是 2017-01-23
-
很抱歉是
now() -
这个修改后的原始查询会产生任何结果吗?
-
那么 ORM 查询会产生一个类似于您的原始查询的查询。几行样本数据可能有帮助[
-
它不会产生任何我只是删除
__date并像next_date_from__lte和next_date_to__gte一样修复它才能工作的东西,但它包括时间查询,我不知道如何排除时间。
标签: python mysql django django-models django-orm