2010-09-02 26 views
14

Ben şu Django 1.2 modelleri: Ben bana aynı kategorilerden herhangi ilişkili tüm Madde nesneleri verecek bir sorgu gerçekleştirebilirsiniz NasılDjango QuerySet birçok çoğa alanda

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) 

o Belirli bir Tercih nesnesi ile ilgili?

örn. "Balık", "kediler" ve "köpekler" kategorileriyle ilgili bir Tercih nesnesine sahip olursam, "balık", "kediler" veya "köpekler" ile ilişkili tüm Makalelerin bir listesini istiyorum.

cevap

17

Dene:

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

Evet, bu çalışır. – Roger

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

Bunu test mü? Benzer bir şey denedim ve bir hata aldım. –

+0

Bir TypeError alıyorum: 'ManyRelatedManager' nesnesi yinelenen değil – Roger

+0

Benim hatam. Sabit. –