2014-01-30 9 views
0

OpenERP之內,當您在python中定義新的char字段並將False設置爲默認值時,該字段將在db中設置爲NULLORM負責轉換。 ORM是否也以相同的方式轉換整數類型,或者我應該小心,它可以將其轉換爲0而不是NULL當影響到整數時,OpenERP是否將False值轉換爲NULL?

我在哪裏可以找到即時價值轉換規則OSVOpenERP ORM)?

回答

3

是的,當發出ORM'.search'查詢時,傳入Python False來表示數據庫空值。 ORM沒有'is'操作符,所以你必須查詢('column','=',False)。同樣,當'.browse'返回行時,數據庫空值將轉換爲Python False。

我相信這樣做的原因是xmlrpc(用於將這些查詢發送到OpenERP服務器)沒有任何方法在其「開箱即用」配置中表示無/空值。 Xmlrpc可以配置爲允許空值,但OpenERP不會使用它。

這引發了一個明顯的問題,那就是可空布爾字段發生了什麼,其中False是一個有效值?基於個人實驗:當使用可爲空的布爾字段創建行時,如果傳遞Python False,那麼數據庫最終會包含false,其他數據類型不爲null。我不認爲有什麼方法可以將這些字段設置爲null:它無法傳遞Python None,也不會將默認值設置爲None並且根本不傳遞該列。

這是在哪裏記錄的?我找不到它。

這一切都很瘋狂。歡迎來到Odoo!

+3

我覺得我們應該讓T恤上寫着「這都瘋了,歡迎來到Odoo!」 ;) –

+0

你可以使用('column','=',None)它看起來像列是NULL。 –