ReadOnly字段以NULL值保存

时间:2014-01-02 10:03:32

标签: python openerp crm

CRM机会表单视图中,我为概率字段添加了readonly="1"。当我保存时,无论我的概率值如何,它都以NULL值存储。 这是OpenERP的错误吗?

4 个答案:

答案 0 :(得分:1)

我们有两个值,如客户端和服务器端。在服务器端编码完成像浮点值有0.0等。只读字段不从客户端获取值,因为它是只读的。在View中,由于服务器端编码,我们看到0.0为浮点值。如果删除只读属性,则可以从客户端获取值,并将该值传递给服务器并存储到数据库中。具有只读属性的字段无法从客户端获取值并将NULL存储到数据库中。

希望这会对你有所帮助。

答案 1 :(得分:1)

在openerp中,Readonly字段用于显示内容,但不会在数据库中存储任何数据。所以它显示Null值。 Readonly仅用于提供信息。

答案 2 :(得分:0)

我认为这是openerp中的一个错误。我为此创建了一个补丁。在openerp插件中,web模块,转到static / src / js / view_form.js。

Index: view_form.js
===================================================================
--- openerp/addons/web/static/src/js/view_form.js   
+++ openerp/addons/web/static/src/js/view_form.js   
@@ -833,11 +833,9 @@
                     // Special case 'id' field, do not save this field
                     // on 'create' : save all non readonly fields
                     // on 'edit' : save non readonly modified fields
-                    if (!f.get("readonly")) {
-                        values[f.name] = f.get_value();
-                    } else {
-                        readonly_values[f.name] = f.get_value();
-                    }
+                   values[f.name] = f.get_value();
+                    if (f.get("readonly"))
+                       readonly_values[f.name] = f.get_value();
                 }
             }
             if (form_invalid) {

答案 3 :(得分:0)

将概率字段更改为函数字段,并编写函数(ex _get_probability)。并保持当前概率计算功能。现在默认概率计算函数显示值,第二个函数(_get_probability)将保存该值。