我有一个名为Event的Django模型,它具有事件日期的日期字段:
class Event(models.Model):
event_date = models.DateField()
我希望能够在模型上设置一个方法来判断事件是“春季学期”事件还是“秋季学期”事件.
春季学期定义为1月至5月.秋天是八月到十二月.
我的目标是能够在一年的一般事件列表中按学期过滤.
我将如何编写定义每个学期的方法?
最佳答案
一种方法是:
class SpringSemesterEventManager(models.Manager):
def get_query_set(self):
return super(SpringSemesterEventManager,self).get_query_set() \
.filter(is_spring_semester=True)
class FallSemesterEventManager(models.Manager):
def get_query_set(self):
return super(FallSemesterEventManager,self).get_query_set() \
.filter(is_fall_semester=True)
class Event(models.Model):
event_date = models.DateField()
@property
def is_spring_semester(self):
month = self.event_date.month
return True if month >= 1 and month <= 5 else False
@property
def is_fall_semester(self):
month = self.event_date.month
return True if month >= 8 and month <= 12 else False
objects = models.Manager()
spring_semester = SpringSemesterEventManager()
fall_semester = FallSemesterEventManager()
然后在视图中你可以做到:
fall_events = Event.fall_semester.all()
希望能帮到你.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。