2016-11-03 1 views
1

Я пытаюсь изменить значение по умолчанию для некоторых полей свойств, таких как: «cost_method», «product_type» и «оценка» модуля «product», но я могу изменить только поля не-свойства.Как изменить значение по умолчанию для поля свойств в Odoo (старый API)?

Что я пытался: - Я создал новый модуль и унаследовал модель «product.template» и переопределил словарь «_default», но он не сработал.

  • Я создал новые поля с тем же именем, но другого типа (выбор) не был имуществом, но и не сделал этого.

Код:

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

_columns = {

'cost_method': fields.selection ([('средний', 'Средняя цена'), ('стандартный', «Стандарт Price '), (' real ',' Real Price ')]) ,' type ': fields.selection ([(' product ',' Stockable Product '), (' consu ',' Consumable '), (' service ',' Service ')],' Product Type ', 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.

Вы добавили свою команду. Файл к вашему __init__.py?

Вы установили правильные зависимости в своем __openerp__.py. В вашем случае «продукт»?

Надеюсь, что вам поможет. Дай мне знать.

EDIT: Я мог бы воспроизвести вашу проблему. Мой код для тестирования

# -*- 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 -field никогда не имел значения consu. В моем случае я мог бы решить проблему, открыв меню Settings -> Technical Settings -> Actions -> User-defined Defaults. Я удалил все записи, где указано имя type, а также номер модели product.template.

Теперь, если я создаю новый продукт, по умолчанию используется тип consu. Такое же поведение с полем cost_method.

+0

Я сделал все это. Как я уже говорил, мой код работает отлично, за исключением полей свойств. И он также работает даже с полями свойств, если я, например, меняю свой тип на «Char». Но когда я меняю тип на «Выбор», Оду продолжает думать, что они являются полями свойств и пытается получить их значения из таблицы «ir_property», и если я удалю эти значения из таблицы «ir_property», Odoo поместит пустые значения. Теперь вопрос: как удалить старые поля? или как убедить Odoo взять мои дефолты и не извлекать их из «ir_property»? – Ehab

+0

Вы видели мою модификацию? – Nope

+0

Работает с «типом», но не с «cost_method. Очень смущает! – Ehab