Joh*_*les 14 python sqlite django django-models django-queryset
这让我在一小时的大部分时间里感到沮丧.
我有以下型号:
sold= models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)
以及以下视图代码:
properties = Property.objects.filter(sold=False).order_by('-created_on');
Run Code Online (Sandbox Code Playgroud)
以及我的sqlite3数据库中的以下值:
sqlite> select sold from clients_property;
1
1
1
1
1
Run Code Online (Sandbox Code Playgroud)
并且以下模板代码可以正常工作(如隐藏已售出的商品):
{% if not property.sold %}
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么查询集过滤器不起作用或为什么我做错了?我试过了:
sold="1"
sold=1
sold="false"
sold=False
sold="False"
Run Code Online (Sandbox Code Playgroud)
Kir*_*ril 20
这也发生在我身上.
在SQLite中你可以得到值为0的布尔值和值为False的布尔值
所以Django不能用于设置为False的那些
我在sqliteman中看到了这种差异
简单的更新修复了问题.
我认为这发生在我的开发环境中的模式升级和迁移期间,所以我并不太担心它.
Iss*_*lly 14
从您发布的内容来看,一切都按照广告宣传的方式进行.如果你从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>,]
Run Code Online (Sandbox Code Playgroud)
Jack是对的,1在大多数SQL实现中应该评估为True.
| 归档时间: |
|
| 查看次数: |
23801 次 |
| 最近记录: |