2015-01-15 93 views
0

請考慮以下無用的示例。我們有Widgets,Widgets和Users的集合,每個都由M2M鏈接。一個Widget可以屬於多個Collection。每個用戶可以訂閱多個收藏。如何查詢Django中的雙重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列表嗎?

回答

2

你想要的是一個反向查找:https://docs.djangoproject.com/en/1.7/topics/db/queries/

要引用「反向」的關係,只是使用模型的小寫名稱。

既然你要的Widgets列表,開始與該型號:

fredsWidgets = Widget.objects.filter(widgetcollection__user=fred) 

應該這樣做。

+0

當然,我一直在想它是錯誤的! – Oli 2015-01-15 21:24:15