使用布尔字段的 Object.Filter() 错误

M. *_*Gar 1 django pyodbc django-mssql-backend

当我尝试使用时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) ")
Run Code Online (Sandbox Code Playgroud)

但这只有在使用过滤器时才会发生,BooleanField如果我使用PositiveIntegerField, CharField, DateTimeField or TextField过滤器没有问题。我认为这可能适用于我使用的版本

Python 3.9.0
Django 3.1.3
Pyodbc 4.0.30
Django-mssql-backend 2.8.1
Run Code Online (Sandbox Code Playgroud)

我需要使用作为条件我的BooleanField. 有人知道为什么会这样吗?

Gle*_*.J. 5

这是由 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 的这个问题。自此补丁以来一直没有发布。

  • 谢谢!我按照你的建议做了,效果很好=) (2认同)