首页 > 解决方案 > Django获取包含多对多关系pk的所有对象

问题描述

我有以下模型,我需要检索在其连接订阅中具有订阅的所有订阅(我知道其中的primary key

connected_subscription在实践中,我需要在其字段中包含订阅的所有订阅

Subscription(models.Model):
  connected_subscriptions=models.ManyToManyField('self', blank=True)

如何检索所有订阅?

Subscription.objects.filter(connected_subscription__???=subscription_key)

标签: pythondjango

解决方案


您可以使用以下方式过滤:

Subscription.objects.filter(connected_subscriptions=pk_of_the_object)

其中pk_of_the_object是相关对象的主键。

这是可行的,因为 Django 将在订阅之间的联结表上创建一个LEFT OUTER JOIN(可能优化为一个INNER JOIN),然后过滤链接Subscription的 s。


推荐阅读