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_active62 ではない何らかのブール値を意味します。したがって、すぐに修正できるものがあります。通常、モデルに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 に答える