Django Boolean Queryset Filter no funciona

Esto me ha estado frustrando durante la mayor parte de una hora.

Tengo el siguiente modelo:

sold= models.BooleanField(default=False) 

Y el siguiente código de vista:

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

Y los siguientes valores en mi base de datos sqlite3:

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

Y el siguiente código de plantilla FUNCIONA (como en, oculta los artículos vendidos):

 {% if not property.sold %} 

¿Alguien sabe por qué el filtro de conjunto de consultas no funciona o por qué lo estoy haciendo mal? He intentado:

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

De lo que has publicado, todo está funcionando como se anuncia. Si intentas esto desde el shell, deberías obtener los siguientes resultados. Por supuesto que estoy inventando algo, así que lee antes de copiar y pegar.

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

Jack tiene razón, debo evaluar a True en la mayoría de las implementaciones de SQL.

Esto ha sucedido a mí también.

Resultó que en SQLite puede tener Boolean con valor 0 y Boolean con valor Falso

Así que Django no funciona con los establecidos en Falso

Vi esta discrepancia en sqliteman

Una simple actualización solucionó el problema.

Creo que esto sucedió durante las actualizaciones de esquema y la migración en mi entorno de desarrollo, por lo que no me preocupa demasiado.

Yo tuve el mismo problema. Mi solución fue cambiar el tipo de columna de “bit” a “tinyint”.

El problema en mi caso fue causado por una columna agregada manualmente en una tabla.