0
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)

谢谢你

4

2 回答 2

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)
于 2013-07-22T13:11:46.713 回答
0

答案在这里: https ://docs.djangoproject.com/en/dev/ref/models/querysets/#annotate

你做一个注释,它可以作为一个字段过滤。

它可能看起来像这样:

CourseEvent.objects.annotate(is_active=Count('course__enroll')).exclude(is_active=0)
于 2013-07-22T13:14:22.663 回答