Django日和月事件日期查询

时间:2015-09-22 05:04:24

标签: python django django-models

我有一个看起来像这样的django模型:

class Event(models.Model):
    name = model.CharField(...etc...)
    date = model.DateField(...etc...)

我需要的是一种方法来获取特定日期和月份的所有事件 - 就像这一天的#34;"页。

def on_this_day(self,day,month):
    reutrn Events.filter(????)

我已经尝试了所有常规日期查询类型,但它们似乎都需要一年,而且没有迭代所有年,我无法看到它如何完成。

1 个答案:

答案 0 :(得分:4)

您可以通过指定日期和月份来进行此类查询:

def on_this_day(day, month):
    return Event.objects.filter(date__day=day, date__month=month)

很可能使用MONTH(date)DAY(date)之类的SQL运算符扫描数据库表或等效查找

如果您添加并编制索引Event.dayEvent.month(如果Event.date在内部存储为数据库中的int,您可能会获得更好的查询性能,它会使不太适应您的(day, month)查询)

这里有来自Django的一些文档:https://docs.djangoproject.com/en/dev/ref/models/querysets/#month