我有一个看起来像这样的django模型:
class Event(models.Model):
name = model.CharField(...etc...)
date = model.DateField(...etc...)
我需要的是一种方法来获取特定日期和月份的所有事件 - 就像这一天的#34;"页。
def on_this_day(self,day,month):
reutrn Events.filter(????)
我已经尝试了所有常规日期查询类型,但它们似乎都需要一年,而且没有迭代所有年,我无法看到它如何完成。
答案 0 :(得分:4)
您可以通过指定日期和月份来进行此类查询:
def on_this_day(day, month):
return Event.objects.filter(date__day=day, date__month=month)
很可能使用MONTH(date)
和DAY(date)
之类的SQL运算符扫描数据库表或等效查找
如果您添加并编制索引Event.day
和Event.month
(如果Event.date
在内部存储为数据库中的int
,您可能会获得更好的查询性能,它会使不太适应您的(day, month)
查询)
这里有来自Django的一些文档:https://docs.djangoproject.com/en/dev/ref/models/querysets/#month