through Classフィールドで多対多の関係をフィルタリングしようとしています。
Djangoドキュメントを引用して、私の目標を説明します
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
この例では、私の目標は、多対多の関係をフィルタリングし、Groupに参加しているPersonのみを取得することです。特定の日付から開始します(date_joined field)。
出来ますか?
次のことができます 関係全体のクエリ Django ORM(またはこの場合は逆の関係)):
person = Person.objects.filter(
membership__group=example_group,
membership__date_joined__gte=example_date
)