2010-09-02 79 views
14

我有以下的Django 1.2車型:Django的查詢集爲許多到許多領域

class Category(models.Model): 
    name = models.CharField(max_length=255) 

class Article(models.Model): 
    title = models.CharField(max_length=10, unique=True) 
    categories = models.ManyToManyField(Category) 

class Preference(models.Model): 
    title = models.CharField(max_length=10, unique=True) 
    categories = models.ManyToManyField(Category) 

我怎麼能執行一個查詢,這將使我與任何同類別相關聯的所有文章對象給定的偏好對象與?

例如如果我有一個與「魚」,「貓」和「狗」類別有關的偏好對象,我想要列出所有與「魚」,「貓」或「狗」相關的文章。

回答

17

嘗試:

preference = Preference.objects.get(**conditions) 
Article.objects.filter(categories__in = preference.categories.all()) 
+0

是的,這個工程。 – Roger 2010-09-02 19:57:23

2
Article.objects.filter(categories__in=myPreferenceObject.categories.all()) 
+0

你測試出來?我嘗試了類似的東西,並得到一個錯誤。 – 2010-09-02 19:53:59

+0

我得到一個TypeError:'ManyRelatedManager'對象不可迭代 – Roger 2010-09-02 19:54:57

+0

我的錯。固定。 – 2010-09-02 19:58:06