【发布时间】:2017-07-12 23:07:23
【问题描述】:
我有一个带有 DateField 的对象的 Django 模型。我还有两个管理器在特定日期范围内过滤这些对象。
class SchoolYearManager(models.Manager):
def get_query_set(self):
now = datetime.datetime.now()
current_year = now.year
start_date = datetime.date(current_year, 7, 1)
end_date = datetime.date((current_year + 1), 6, 30)
return super(SchoolYearManager, self).get_query_set().filter(status=self.model.LIVE).filter(event_date__range=(start_date, end_date))
class PastSchoolYearManager(models.Manager):
def get_query_set(self):
current_year = self.model.event_date.year
start_date = datetime.date(current_year, 7, 1)
end_date = datetime.date((current_year + 1), 6, 30)
return super(PastSchoolYearManager, self).get_query_set().filter(status=self.model.LIVE).filter(event_date__range=(start_date, end_date))
class Event(models.Model):
LIVE = 3
DRAFT = 4
STATUS_CHOICES = (
(LIVE, 'Live'),
(DRAFT, 'Draft'),
)
status = models.IntegerField(choices=STATUS_CHOICES, default=4, help_text="Only entries with a status of 'live' will be displayed publically.")
event_date = models.DateField()
objects = Models.Manager()
school_year_events = SchoolYearManager()
past_school_year_events = PastSchoolYearManager()
我的第一位经理 (SchoolYearManager) 按预期返回该日期范围内的事件。但是当我尝试做Event.past_school_year_events.all() 时,我得到一个属性错误:“type object 'Event' has no attribute 'event_date'”。
我与第二个经理 (PastSchoolYearEvents) 的目标是包装通用年份存档视图以返回特定年份的日期范围内的事件。
为什么我不能在经理内拨打self.model.event_date?
我这样做是否正确?如果没有,有什么更好的方法来做到这一点?
【问题讨论】:
标签: python django django-models filter