Могу ли я установить значение по умолчанию действием сервера в odoo

Я хочу установить значение по умолчанию в поле many2one. Но я хочу установить его на python code в server action в on-creation. Проблема в том, что я не знаю, каковы правила написания python code в server action. Есть ли способ установить значение по умолчанию для поля Many2one в действии сервера. Например: та же работа выполняется через индивидуальный код Установка значения поля по умолчанию зависит от другого поля в odoo

Я буду очень благодарен ...


person Tahir Noor    schedule 08.08.2016    source источник


Ответы (1)


Вы можете использовать автоматическое действие для этого требования. Просто создайте его в Настройки/Технические/Автоматизация/Автоматические действия. Дайте ему имя, правильную модель, на которой вы хотите его запустить, и, конечно же, установите «Когда запускать» на «При создании».

На второй вкладке добавьте новое серверное действие. Следуя простому фрагменту кода для действия сервера (это для sale.order, и вам нужен ir.config_parameter с заданным внешним идентификатором):

object.write({'client_order_ref': 'YourRef'})
if 'A' in object.partner_id.name:
    object.write({'note': 'AAAAAAAAAA'})
else:
    object.write({'note': env.ref('mymodule.mycool_ir_config_parameter').value})

Пример написан для Odoo V8+.

person CZoellner    schedule 08.08.2016
comment
Сэр, я пишу этот код if object.debit==0: res=self.pool.get('account.analytic.account').search(cr, uid, [('name','=','Internal')], context=context) object.write({'account_analytic_id': res}) в действии сервера, но он ничего не делает... пожалуйста, помогите мне с этим... - person Tahir Noor; 09.08.2016
comment
Сэр, вы устанавливаете значение поля char... подскажите, пожалуйста, как установить значение поля many2one... пожалуйста... - person Tahir Noor; 09.08.2016
comment
Вы можете выполнить поиск или использовать env.ref() для получения других записей. После этого просто установите поле many2one с идентификатором записи. Например (я знаю, что это не лучший пример): object.write({'partner_id': env['res.partner'].search([], limit=1).id}) установит первого партнера в базе данных в качестве партнера по умолчанию при создании sale.order. - person CZoellner; 09.08.2016
comment
Спасибо, сэр. Этот код теперь хорошо работает для меня.. res = self.pool.get('account.analytic.account').search(cr, uid, [('name','=','Internal')], context=context) object.write({'analytic_account_id': res[0]}) Спасибо... вы лучший.... - person Tahir Noor; 09.08.2016
comment
Сэр, не могли бы вы рассказать мне, как сравнить current login user id там в коде Python server action - person Tahir Noor; 10.08.2016
comment
если вы используете Odoo V8+, вы можете использовать env.user.id для получения текущего идентификатора пользователя - person CZoellner; 10.08.2016
comment
Сэр, не могли бы вы рассказать мне, как получить текущее имя пользователя в отчете qweb??? - person Tahir Noor; 18.08.2016
comment
Это не имеет ничего общего с этим вопросом / ответом - person CZoellner; 18.08.2016