1

最近、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'に設定してみましたが(なぜそうならないのですか?)、何に設定しても、同じエラーメッセージがスローされ続けます。他の何かがそれを攻撃していることを意味します。私はそれを「Noneを返す」に設定しました、そしてそれは私にフィルタリングされていないリストを与えました。私が見ることができた唯一の可能な衝突は、一番上に宣言があるということですが、それは問題ではないはずです(以前はそうではありませんでした):

 class Publication(Unit):  
    ir = models.BooleanField(default=False,null=False,verbose_name="Is IR")

私のpostgresデータベースには、次のデータ型を持つこれらのフィールドがあります。

 status  | character varying
 ir      | integer

言うまでもなく、私は非常に混乱しています。私はこれを設定しませんでした-私はそれを修正しようとしているだけです(そしてその過程で何かを学びます)。これをフィルタリングする適切な方法は何ですか?フィードバックをいただければ幸いです。

4

1 に答える 1

1

Postgresでは、BooleanFieldのタイプは「boolean」です。

簡単な修正は、Postgresの列を変更することです。

于 2012-06-15T19:19:47.410 に答える