如何在odoo 9中为many2one字段设置默认值?

时间:2016-09-30 15:54:06

标签: default-value many-to-one odoo-9

我是Odoo-9.0c系统的新手,并尝试进行一些更改以支持这项工作。但我不知道如何为many2one字段设置特定值((选择类型)。该字段也是通过自定义模块创建的。解决此类问题的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

如果您希望使用动态内容,可以定义一个函数,该函数将设置记录中字段的默认值。在您的函数中,您需要在相关模型上标识记录的ID,并将字段的值分配给该ID。

@api.multi
def _get_field_name_default(self):
    related_model_id = self.env['related.model'].search([<YOUR DOMAIN HERE>]).id
    return related_model_id

field_name_id = fields.Many2one('model.name', string="Field Title", default=_get_field_name_default)

如果预计该值总是相同且您已经知道相关模型中记录的ID,那么您可以静态分配它。

field_name_id = fields.Many2one('model.name', string="Field Title", default=1)

最好使用能够在相关模型上的记录被删除的情况下返回False或None的函数。

答案 1 :(得分:1)

使用新的api,只需指定要更改的字段属性:

field_name = fields.Many2one(default=a_function)

来自Odoo new api guide line

  
    
      

字段继承

             

API的一个新功能是只能更改该字段的一个属性:

name = fields.Char(string='New Value')
             

...

             

字段默认值

             

默认现在是字段的关键字:

             

您可以将其归因于值或函数

name = fields.Char(default='A name')
             

name = fields.Char(default=a_fun)
             

...

def a_fun(self):  
    return self.do_something()
    
  

答案 2 :(得分:0)

您可以使用lambda设置默认值:

#define DEBUG(_msg) MessageBoxA(nullptr, _msg, "Debug", MB_OK)