2012-04-06 5 views
2

Вот мои модели,
Фильтр Джанго QuerySet включая конкретный объект в manytomany поля

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

Как я могу получить курс QuerySet включая определенный возраст?
просмотров:

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

ответ

15

Ваш вопрос немного расплывчато. Во-первых, есть чтение документации на querying across relationships.

Если вы хотите, чтобы получить курсы, связанные с только те Age «с определенным значением поля:

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

где 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, не так ли? –

Смежные вопросы