django - 使用布尔字段的 Object.Filter() 错误
问题描述
当我尝试使用时model.objects.filter(mybooleanfield=True)
给了我这个错误
('42000', "[42000] [Microsoft] [SQL Server Native Client 11.0] [SQL Server] A non-Boolean expression was specified in a context where a condition was expected, near 'mybooleanfield'. (4145) (SQLExecDirectW) ")
但这只有在使用过滤器时才会发生,BooleanField
如果我使用PositiveIntegerField, CharField, DateTimeField or TextField
过滤器没有问题。我认为这可能适用于我使用的版本
Python 3.9.0
Django 3.1.3
Pyodbc 4.0.30
Django-mssql-backend 2.8.1
我需要将我的BooleanField
. 有人知道为什么会这样吗?
解决方案
这是由 Django 3.1.x 引起的。更多信息在这里:https ://github.com/ESSolutions/django-mssql-backend/issues/69 。
您可以将 django 降级到 3.0.x,或者(我推荐)使用https://github.com/ESSolutions/django-mssql-backend的最新主版本,其中有一个补丁解决了 Django 3.1.x 的这个问题。自此补丁以来一直没有发布。
推荐阅读
- linux - ceph-rgw 安装后服务自动停止
- android - Android Studio 模拟器的 Android 8、9 和 10 ARM 映像在哪里?
- .net-core - 有没有办法在 .NET Core 库中包含 .NET Framework 代码?
- docker - 将 kafDrop 连接到安全代理
- postman - 收集运行中的邮递员收集变量
- c++ - 无法使用 Arduino 和 SIM900 连接或发布到 MQTT 代理
- c# - 堆栈溢出响应 API
- arrays - 使用 ID 从另一个工作表导入数据,但只导入一些列
- python - 如何更快地遍历十个列表(每个十个元素)的笛卡尔积?(概率和骰子)
- c - CSR 和 BFS 总是以 0 步找到