2011-01-03 5 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"을 수행하면 작동합니까? –

+0

Django 1.2가있는 SQLite 데이터베이스를 사용하고 있습니다. – DevX

+0

is_course = 0이 작동하지 않습니다. – DevX

답변

4

쿼리가 올바른지. 쿼리되는 데이터베이스의 레코드가 있는지 확인하십시오. Room.objects.all()을 수행하고 is_course =를 False로 검사합니다.

+0

나는 실제로 같은 생각을 가지고 있었고 방금 다음과 같이했습니다. rooms.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