2011-01-03 14 views
1

は、私は次のようにモデルフィールドが定義されている:Django Querysetのブール比較?

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

を今、私はis_courseフィールドの値Falseを持っている私のデータベース内のすべてのレコードを検索しようとしています。

は、私は次のことをしてみてください、それが動作していないよう:

これを行うための正しい方法は何ですか
myrooms = Room.objects.filter(is_course= False) 

/

+0

Djangoのどのデータベースとバージョンを使用していますか? 「False」の代わりに「is_course = 0」を実行すると、それは機能しますか? –

+0

私はDjango 1.2でSQLiteデータベースを使用しています。 – 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

関連する問題