我需要编写一个查询,返回小于或等于某个月的某一天的所有对象。今年不重要。很容易在特定的日期/月获取对象(假设now = datetime.datetime.now()
):
posts = TodaysObject.objects.filter(publish_date__day=now.day, publish_date__month=now.month)
但我做不到:
posts = TodaysObject.objects.filter(publish_date__day__lte=now.day, publish_date__month=now.month)
似乎Django认为我在组合多个字段查找时试图进行联接(publish_date__day__lte
)。在Django最好的方法是什么?
试试这个:
选项1:
选择2:
执行原始sql查询:
使用extra()函数:
假设您使用的是MySQL。对于PostgreSQL,需要分别将日(publish_date)和月(publish_date)更改为date_PART('DAY',publish_date)和date_PART('MONTH',publish_date)。
它并不总是可以从一个数据库引擎移植到另一个数据库引擎,但是您可能需要查看
extra()
queryset方法。from django docs
这允许您注入原始sql来构造比django queryset api更复杂的查询。
如果您的应用程序需要移植到不同的数据库引擎,您可以尝试重新构造,以便拥有日、月和年整数字段。
相关问题 更多 >
编程相关推荐