如何在 odoo 9 中为 many2one 字段设置默认值?
How can I set default value for a many2one field in odoo 9?
我是 Odoo-9.0c 系统的新手,尝试做一些改变来支持这项工作。但是我不知道如何给many2one字段((selection type)设置具体的值。该字段也是通过自定义模块创建的。解决这种问题的正确方法是什么?
如果您想使用一些动态的东西,您可以定义一个函数来为您的记录中的字段设置默认值。在您的函数中,您需要识别相关模型上记录的 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 的函数。
使用新的 api,只需指定要更改的字段属性:
field_name = fields.Many2one(default=a_function)
Field inheritance
One of the new features of the API is to be able to change only one attribute of the field:
name = fields.Char(string='New Value')
...
Fields Defaults
Default is now a keyword of a field:
You can attribute it a value or a function
name = fields.Char(default='A name')
or
name = fields.Char(default=a_fun)
...
def a_fun(self):
return self.do_something()
您可以使用 lambda 设置默认值:
type = fields.Many2one('your.model',"String to display", default=lambda self: self.env['your.model'].search([('name','=','value you need to set as default')]))
我是 Odoo-9.0c 系统的新手,尝试做一些改变来支持这项工作。但是我不知道如何给many2one字段((selection type)设置具体的值。该字段也是通过自定义模块创建的。解决这种问题的正确方法是什么?
如果您想使用一些动态的东西,您可以定义一个函数来为您的记录中的字段设置默认值。在您的函数中,您需要识别相关模型上记录的 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 的函数。
使用新的 api,只需指定要更改的字段属性:
field_name = fields.Many2one(default=a_function)
Field inheritance
One of the new features of the API is to be able to change only one attribute of the field:
name = fields.Char(string='New Value')
...
Fields Defaults
Default is now a keyword of a field:
You can attribute it a value or a function
name = fields.Char(default='A name')
or
name = fields.Char(default=a_fun)
...
def a_fun(self): return self.do_something()
您可以使用 lambda 设置默认值:
type = fields.Many2one('your.model',"String to display", default=lambda self: self.env['your.model'].search([('name','=','value you need to set as default')]))