2012-06-15 55 views
1

我最近將一個django項目從mysql遷移到了postgresql,並在該過程中破壞了正在使用的過濾器。舊的過濾器是這樣的:在使用布爾作爲django中的過濾器時遇到困難

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 

不用說,我非常困惑。我沒有設置 - 我只是試圖修復它(並在過程中學習)。過濾這個的正確方法是什麼?對於任何反饋,我們都表示感謝。

回答

1

在Postgres中,BooleanField的類型是「boolean」。

快速修復是更改Postgres中的列。