我最近将一个 django 项目从 mysql 迁移到 postgresql,并在此过程中破坏了正在使用的过滤器。旧过滤器如下所示:
return (model_class.objects.filter(status='0',ir=1).count() * 2) +
model_class.objects.filter(status='1',ir=1).count()
但是,现在会产生一个错误,指出:
DatabaseError at /report/trip/publication
operator does not exist: integer = boolean
LINE 1: ...AND "publication"."ir" = true )
^
HINT: No operator matches the given name and argument type(s).
You might need to add explicit type casts.
我尝试设置 ir = '1',甚至尝试将其设置为 '3'(为什么不设置?),但无论我将其设置为什么,它都会不断抛出相同的错误消息,这似乎暗示有别的东西正在把它搞砸。我确实将它设置为“返回无”,这给了我一个未经过滤的列表。我能看到的唯一可能的冲突是顶部有一个声明,但这不应该是一个问题(以前不是):
class Publication(Unit):
ir = models.BooleanField(default=False,null=False,verbose_name="Is IR")
我的 postgres 数据库具有以下数据类型的字段:
status | character varying
ir | integer
不用说,我非常困惑。我没有设置它 - 我只是想修复它(并在此过程中学习一些东西)。过滤这个的正确方法是什么?对于任何反馈,我们都表示感谢。