Django过滤查询集基于多对多的额外字段模型

时间:2016-10-26 16:14:58

标签: 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)

      def __unicode__(self):
          return self.name

class Membership(models.Model):
      person = models.ForeignKey(Person)
      group = models.ForeignKey(Group)

我想获取所有Person对象,并且每个对象添加一个列'is​​_member',如果该人至少是一个组的成员,则该值为True。

我尝试注释和计数,但我有点困惑......谢谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

System.Linq

如果您想了解更多相关信息,conditional-expressions可以帮助您。

答案 1 :(得分:0)

以下内容对您有用:

persons = []
for p in Person.objects.all():
    if p.membership_set.all():
        p.is_member = True
    else:
        p.is_member = False
    persons.append(p)