2011-01-03 2 views
1

У меня есть поле модели определяется следующим образом:Булево сравнение в Django Queryset?

class Room(models.Model): 
    ... 
    ... 
    is_course = models.BooleanField("Is Room a Course?", default= False) 

Теперь я пытаюсь найти все записи в моей базе данных, которые имеют значение Лжи для is_course поля.

Я стараюсь следующее, но это не похоже на работу:

myrooms = Room.objects.filter(is_course= False) 

Что такое правильный способ сделать это/

+0

Какую базу данных и версию Django вы используете? Если вы делаете «is_course = 0» вместо «False», это работает? –

+0

Я использую базу данных SQLITE с Django 1.2. – DevX

+0

is_course = 0 не работает. – DevX

ответ

4

Запрос является правильным. Убедитесь, что в запрошенной базе данных есть записи. Сделайте Room.objects.all() и изучите любое значение для is_course = для False.

+0

У меня на самом деле была такая же идея, и я просто сделал следующее: rooms = Room.objects.all() category_rooms = [комната для комнаты в комнатах, если room.is_course == False] Это прекрасно работает. Я понятия не имею, почему запрос не работает! – DevX

-2

Я вижу эту проблему тоже (такой же SQLite + Django 1.2 тоже). Должна быть ошибка ORM. попробуйте нажать следующую инструкцию:

Room.objects.all().update(is_course=False) 

после этого вы должны получить результаты.

+3

Это немного глупое предложение - что, если исходный плакат не хочет устанавливать значение False во всех своих записях? – Ben