2013-07-28 4 views
0

Это может быть очень простой вопрос, но я искал какое-то время в документации django и не нашел ответа.Как проверить, содержит ли заданное поле определенное значение в Django?

Моя проблема заключается в том, что я хочу проверить, говорит ли пользователь, который может говорить по-разному, с учетом языка.

Мои соответствующие классы:

class Language(models.Model): 
    idiom = models.CharField(max_length=40, unique=True) 

class Profile(UserenaBaseProfile): 
    spoken_languages = models.ManyToManyField(Language, blank = True) 

Учитывая: query_set = Profile.objects.all()

я пытался что-то вроде:

ls = Language.get(idiom="some language here") 

query_set.filter(spoken_languages__idiom__contains=ls.idiom) 
query_set.filter(spoken_languages__contains=ls) 

или

ls = Language.objects.filter(idiom="some language") 
query_set.filter(spoken__languages__in=ls) 

Некоторые больше, но без успеха, Это кажется, это должно быть довольно легко, но все же я не могу найти правильный подход. Любая идея была бы действительно оценена.

ответ

1

Это должно работать:

profiles = Profile.objects.filter(spoken_languages__idiom="language here") 

Обратите внимание, что вызов .filter() на QuerySet не изменяет объект QuerySet. Вместо этого он создает и возвращает клон с новыми применяемыми фильтрами. Поэтому, если вы хотите отфильтровать существующий набор запросов, вы должны сделать:

query_set = query_set.filter(spoken_languages__idiom="language here") 
Смежные вопросы