这让我沮丧了一个小时。
我有以下型号:
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"
最佳答案
从你发布的内容来看,一切都如广告所示。如果你从shell中尝试这些东西,你应该得到以下结果。当然,我正在做一些,所以在你复制粘贴之前先阅读。
>>> 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。