class Course(models.Model):
def is_active(self):
return self.enroll_set.count()>0
class CourseEvent(models.Model):
course = models.ForeignKey(Course)
我想找到仅指向活动课程的所有Events
。
类似的东西:
events = CourseEvent.objects.filter(course.is_active=True)
谢谢
答案 0 :(得分:2)
您的is_active()
方法毫无意义。
is_active
意味着某些种类的布尔值不是62.所以有一些东西你可以立即纠正。通常情况下,我会在is_active
模型上设置Course
标记(从而完全删除方法is_active
)并切换使ORM调用非常直接:
class Course(models.Model):
active = models.BooleanField(default=False)
events = CourseEvents.objects.filter(course__active=True)
答案 1 :(得分:0)
答案在这里: https://docs.djangoproject.com/en/dev/ref/models/querysets/#annotate
你做了一个注释,它可以作为一个字段过滤。
看起来像这样:
CourseEvent.objects.annotate(is_active=Count('course__enroll')).exclude(is_active=0)