Python Django:筛选多个联接

Python Django:筛选多个联接,python,django,django-orm,Python,Django,Django Orm,我有一个应用程序,用户可以订阅各种列表。 这里的域是:列表模型/SubscriberModel/ListSubscription模型 列表类定义包含以下行 subscribers = models.ManyToManyField(Subscriber, through='ListSubscription') 虽然这段代码允许我获得所有订户,但我只需要其中的一部分。诀窍就在于它的订阅 类包含标识活动订阅或非活动订阅的“is_active”布尔字段。 是否有一些简单的解决方案可以将“Is_acti

我有一个应用程序,用户可以订阅各种列表。 这里的域是:列表模型/SubscriberModel/ListSubscription模型

列表类定义包含以下行

subscribers = models.ManyToManyField(Subscriber, through='ListSubscription')
虽然这段代码允许我获得所有订户,但我只需要其中的一部分。诀窍就在于它的订阅 类包含标识活动订阅或非活动订阅的“is_active”布尔字段。 是否有一些简单的解决方案可以将“Is_active=True”添加到多对多连接中? 在纯SQL中,我会将此条件添加到join子句中,但不确定Django ORM方式


这里的理想结果是能够有一个查询集来获取所有具有各自*活动的列表“订阅者。

一个
manytomy
字段已经是一个查询集,因此如果您想要活动订阅者,您可以通过
列表
类中的方法调用其
过滤器
方法。
表格可按与目标表格相同的方式进行过滤:

class List(models.Model):
    # ... etc ...
    @property
    def active_subscribers(self):
        return self.subscribers.filter(listsubscription__is_active = True)
要返回至少有一个活动订阅服务器的列表,请使用以下查询:

List.objects.filter(listsubscription__is_active = True)