2015-09-11 1 views
2

Я создал на экране продукта настраиваемый модуль с дополнительными полями. Я пытаюсь, чтобы значение по умолчанию было выпадающим со всеми записями, уже отправленными в это поле, или возможностью создать новую запись (то же, что и значение по умолчанию при добавлении продукта в спецификацию).Пользовательское поле по умолчанию - заполняется другими записями из того же поля

class product_part_detail(osv.osv): 
    _inherit = 'product.template' 

    _columns = { 
    'x_mfrname1': fields.char('P/N'), 
    } 

    _defaults ={ 
    'x_mfrname1': get_default_name, 
    } 

def get_default_name(self): 
    return "test" 

Я попытался создать поле many2one, который ссылается на поле в другой таблице, но я получаю сообщение об ошибке при попытке установить модуль. Ниже приведен обновленный код, с которым у меня возникают проблемы. Заранее спасибо!

class product_part_detail(osv.osv): 
    _inherit = 'product.template' 
    _name = 'product.part.detail' 

    _columns = { 
    'x_mfrname1': fields.many2one('product.part.detail.fill', 'x_mfrname1id'), 
    'x_mfrname2': fields.many2one('product.part.detail.fill', 'x_mfrname1id'), 
} 

class product_part_detail_fill(osv.osv): 
    _name = 'product.part.detail.fill' 

def _sel_func(self, cr, uid, context=None): 
    obj = self.pool.get('product.part.detail') 
    ids = obj.search(cr, uid, []) 
    res = obj.read(cr, uid, ids, ['x_mfrname1', 'x_mfrname2'], context) 
    res = [(r['x_mfrname1'], r['x_mfrname2']) for r in res] 
    return res 

_columns = { 
    'x_mfrname1id': fields.one2many('product.part.detail', 'x_mfrname1', 'x_mfrname2', selection=_sel_func), 
} 

ответ

1

Несколько вещей. Идея сбрасывания значений, которые они ранее вводили, требует многого другого. Вы бы создали еще одну модель, а затем сделаете x_mfrname1 a many2one для этой таблицы. Пока пользователь создает доступ к этой таблице, они получат параметр создания при выпадающем списке для ввода новых значений.

Еще один элемент, как вы используете предварительно 8 API, метод подпись вашего метода по умолчанию должна быть:

def get_default_name(self, cr, uid, context=None): 
+0

Спасибо за вашу помощь. Я попытался создать отношение many2one, но сохраняю ошибку при установке модуля. Я обновил свой новый код выше. Любая помощь очень приветствуется, у меня возникают проблемы с расшифровкой официальной документации по оду. –

+0

@CoreyHuntley Я нашел Odoo Development Essentials отличным ресурсом для начала работы с Odoo. –