考虑以下无用的例子。我们有小部件,小部件和用户的集合,每个都由M2M链接。一个小部件可以属于多个集合。每个用户都可以订阅多个集合。
class Widget(models.Model):
pass
class WidgetCollection(models.Model):
widgets = models.ManyToManyField('Widget')
class User(models.Model):
collections = models.ManyToManyField('WidgetCollection')
对于任何给定的用户,我想列出小部件。我可以遍历M2M,但这真的很松弛。我可以让Django从数据库中生成一个Widgets列表吗?
答案 0 :(得分:2)
您想要的是反向查找:https://docs.djangoproject.com/en/1.7/topics/db/queries/:
要引用“反向”关系,只需使用模型的小写名称。
由于您需要一个小部件列表,请从该模型开始:
fredsWidgets = Widget.objects.filter(widgetcollection__user=fred)
应该这样做。