在Django中按“关系”字段过滤多对多关系 [英] Filtering Many-to-Many relationship by Relationship field in Django

查看:137
本文介绍了在Django中按“关系”字段过滤多对多关系的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过通过班级字段过滤多对多关系。

I'm trying to filter many-to-many relationship by some through Class field.

引用Django文档,我将解释我的目标

Quoting the Django documentation, i will explain my goal

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字段)。

In this example my goal sould be filter many to many relationship and obtain only the Person who has joined some Group starting from certain date (date_joined field).

是吗有可能吗

推荐答案

您可以使用Django ORM(或在这种情况下为反向关系)通过关系进行查询

person = Person.objects.filter(
    membership__group=example_group,
    membership__date_joined__gte=example_date
)

这篇关于在Django中按“关系”字段过滤多对多关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆