Фильтр 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».

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

  • Как мне параметризовать имена столбцов в pysqlite, чтобы избежать SQL-инъекций
  • Как получить вставленный идентификатор после вставки строки в SQLite с помощью Python?
  • Массовая вставка огромных данных в SQLite с использованием Python
  • Поиск базы данных SQLite с переменными Python
  • Как реализовать предложение о наличии в sqlite django ORM
  • Как создать целочисленное поле auto increment Django
  • Как определить, работает ли UPDATE в Python sqlite?
  • Python SQLite3 SQL Injection Vulnerable Code
  • Python - лучший язык программирования в мире.