2012-04-06 63 views
2

這裏是我的模型,
過濾Django的查詢集包括多對多字段中的特定對象

class Age(models.Model): 
    layer = models.CharField(max_length=50) 
    order = models.PositiveIntegerField() 
    ... 
class Course(models.Model): 
    target_age = models.ManyToManyField('Age') 
    ... 

我怎樣才能得到一個療程的查詢集包括特定的年齡?
觀點:

request_courses = Course.objects.filter(target_age ... 

回答

15

你的問題有點含糊。首先,有文檔上querying across relationships.

讀。如果你想獲得與特定的字段值相關的,只有那些Age的課程:

Course.objects.filter(target_age__FIELD=...) 

其中字段在Age模型中場你想要查詢。

或者,如果你有一個Age對象,你想要得到的是實際涉及到一個特定的Age對象的所有課程,您需要:

age = Age.objects.get(...) 
courses = Course.objects.filter(target_age=age) 

,或者如果你想獲得那些相關的課程許多可能的Age的中的至少一個:

ages = Age.objects.filter(...) 
courses = Course.objects.filter(target_age__id__in=ages.values_list('id')) 

EDIT

最後一個例子是使用the in lookup

+0

對不起,我的信息較少。我要求的情況正是最後一個!而且,如果課程有多個target_age,我不能使用第二個查詢來獲得查詢,對嗎? – 2012-04-06 01:22:30