Фильтр Queryset Django Boolean не работает

Это расстраивало меня в течение большей части часа.

У меня есть следующая модель:

sold= models.BooleanField(default=False) 

И следующий код представления:

 properties = Property.objects.filter(sold=False).order_by('-created_on'); 

И следующие значения в моей базе данных sqlite3:

  sqlite> select sold from clients_property; 1 1 1 1 1 

И следующий код шаблона работает (как в, скрывает проданные предметы):

 {% if not property.sold %} 

Кто-нибудь знает, почему фильтр набора запросов не работает или почему я делаю это неправильно? Я пробовал:

 sold="1" sold=1 sold="false" sold=False sold="False" 

3 Solutions collect form web for “Фильтр Queryset Django Boolean не работает”

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

 >>> from myapp.models import Property >>> Property.objects.all() [<Property: Property object>,<Property: Property object>,<Property: Property object>,<Property: Property object>,<Property: Property object>,] >>> Property.objects.filter(sold=False) [] >>> Property.objects.filter(sold=True) [<Property: Property object>,<Property: Property object>,<Property: Property object>,<Property: Property object>,<Property: Property object>,] >>> Property.objects.create(sold=False, my='other', fields=1) >>> Property.objects.filter(sold=False) [<Property: Property object>,] 

Джек прав, 1 должен оценивать значение True в большинстве реализаций SQL.

Это случилось и со мной.

В SQLite вы можете иметь Boolean со значением 0 и Boolean со значением False

Поэтому Django не работает с установками False

Я видел это несоответствие в sqliteman

Простое обновление исправило проблему.

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

У меня такая же проблема. Мое решение состояло в том, чтобы изменить тип столбца от «бит» до «tinyint».

Проблема в моем случае была вызвана добавленным вручную столбцом в таблице.

  • Python Sqlite3: INSERT INTO table VALUE (словарь идет здесь)
  • База данных «на лету» со сценарием
  • текстовый файл в базу данных sqlite3 с python
  • Строка кода Python и SQLite, почему мне нужно поставить «,»?
  • Проблемы с компиляцией pysqlite на окнах
  • Извлечение значений из базы данных SQLite в Python
  • Сериализация Sqlite3 в Python
  • Данные дампа от неправильного SQLite в Python
  • Как установить sqlite3 на Python?
  • Как я могу регистрировать запросы в Sqlite3 с помощью Python?
  • Лучший способ хранения python datetime.time в столбце sqlite3?
  • Python - лучший язык программирования в мире.