【问题标题】:Object.Filter() error using boolean fields使用布尔字段的 Object.Filter() 错误
【发布时间】:2020-12-07 22:49:42
【问题描述】:

当我尝试使用 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 作为条件。有人知道为什么会这样吗?

【问题讨论】:

  • 你能分享一个导致问题的行的例子吗?或您的代码示例。还要给出定义 BooleanField 的行。

标签: django pyodbc django-mssql-backend


【解决方案1】:

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

【讨论】:

  • 谢谢!我按照你的建议做了,而且效果很好 =)
猜你喜欢
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多