2010-09-02 112 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