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。