27

我试图通过类字段过滤一些多对多关系。

引用 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)

在此示例中,我的目标是过滤多对多关系并仅获取从某个日期(date_joined 字段)开始加入某个组的人员

可能吗?

4

2 回答 2

47

您可以使用 django ORM查询跨关系(或在本例中为反向关系):

person = Person.objects.filter(
    membership__group=example_group,
    membership__date_joined__gte=example_date
)
于 2012-10-15T08:36:30.617 回答
0

你也可以这样做:

person = example_group.members.filter(
    membership__date_joined__gte=example_date
)
于 2021-05-28T15:18:25.090 回答