2016-11-03 221 views
1

我试图改变一些属性字段的默认值,例如'cost_method','product_type'和'product'模块的'估价',但我只能更改非属性字段。如何更改Odoo(旧API)中属性字段的默认值?

我尝试过的: - 我创建了一个新模块并继承了'product.template'模型并仅覆盖了'_default'字典,但它不起作用。

  • 我创建了新的字段具有相同的名称,但另一种类型(选择)不属性,但这项工作都没有。

的代码:

_name = "product.template" 
_inherit = "product.template" 

_columns = {

'cost_method':fields.selection([( '平均', '平均价格'),( '标准',“标准价格'),('真实','实际价格')]) ,'type':fields.selection(['product','Stockable Product'),('consu','Consumable'),服务','服务')],'产品类型',required = True,help =“消费品是指你不管理库存的产品,服务是由公司或个人提供的非物质产品。 ,'comp any_id ':fields.many2one(' res.company”, '公司',需要= FALSE) }仅_inherit="product.template"

_defaults = { 
    'company_id': False 
    ,'type' : 'product' 
    , 'cost_method': 'average' 
    , 'barcode':'555' 
} 

回答

1

使用。在你的情况下,你不需要_name属性。

您是否添加了py。档案到您的__init__.py

您是否在您的__openerp__.py中设置了正确的依赖关系。在你的情况下,“产品”?

希望能帮到你。让我知道。

编辑: 我可以重现您的问题。我的测试

# -*- coding: utf-8 -*- 
from openerp.osv import osv, fields 

class product_template(osv.osv): 
    _name = "product.template" 
    _inherit = "product.template" 

    _columns = { 
     'cost_method': fields.selection([('average', 'Average Price'),('standard', 'Standard Price'),('real', 'Real Price')]), 
     'type': fields.selection([('product', 'Stockable Product'),('consu', 'Consumable'),('service','Service')],'Product Type', required=True, help="Consumable are product where you don't manage stock, a service is a non-material product provided by a company or an individual.") , 
     'company_id': fields.many2one('res.company', 'Company', required=False) 
    } 

    _defaults = { 
     'company_id': False, 
     'type' : 'consu', 
     'cost_method': 'average', 
     'barcode':'555' 
    } 

代码这里的type - 场从未有过的consu值。在我的情况下,我可以通过打开菜单Settings -> Technical Settings -> Actions -> User-defined Defaults来解决问题。我删除了名称为type和modelname为product.template的所有条目。

现在,如果我创建新产品,则默认类型为consu。与cost_method-field相同的行为。

+0

我做了所有这些。正如我之前所说,我的代码工作得很好,除了属性字段。例如,如果我将它们的类型更改为“Char”,它甚至可以与属性字段一起工作。但是,当我将类型更改为'Selection'时,Odoo一直认为它们是属性字段,并尝试从'ir_property'表中获取它们的值,如果从'ir_property'表中删除这些值,则Odoo会将空值赋值。现在的问题是:如何删除旧字段?或者如何说服Odoo采取我的默认设置,而不是从'ir_property'中获取它们? – Ehab

+0

您是否看到我的修改? – Nope

+0

使用'type'但不使用'cost_method。很混乱! – Ehab