Django布尔查询集过滤器不起作用


问题内容

一个多小时的时间让我感到沮丧。

我有以下模型:

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"

问题答案:

从您发布的内容来看,一切都按广告宣传进行。如果从外壳程序中尝试这些东西,则应获得以下结果。当然,我正在整理其中的内容,因此在复制粘贴之前请先阅读。

>>> 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>,]

杰克是正确的,在大多数SQL实现中,应该将1评估为True。