如何在 odoo new api 中覆盖字段的默认函数
How overwrite default function of a field in odoo new api
我有一个字段调用一个函数来获取默认值(在模块 project_forecast 中):
def default_user_id(self):
return self.env.user if ("default_user_id" not in self.env.context) else self.env.context["default_user_id"]
user_id = fields.Many2one('res.users', string="User", required=True,
default=default_user_id)
我创建了另一个模块来继承它并更改字段的默认值 user_id 但它无法正常工作,日志中没有任何错误,我该如何解决这个问题?
def default_user_id(self):
return False
Please check this
user_id = fields.Many2one('res.users', string='User',readonly=True, default=lambda self: self.env.user)
您正在直接在字段定义上链接方法。因此,重写该方法已经不够了。只需使用 default
作为唯一参数再次定义字段 user_id
并使用您的新方法:
原机型:
class MyModel(models.Model):
_name = "my.model"
def default_user_id(self):
return self.env.context.get("default_user_id", self.env.user)
user_id = fields.Many2one(
comodel_name='res.users', string="User", required=True,
default=default_user_id)
继承模型:
class MyModelInherit(models.Model):
_inherit = "my.model"
def default_user_id(self):
return self.env['res.users']
user_id = fields.Many2one(default=default_user_id)
我有一个字段调用一个函数来获取默认值(在模块 project_forecast 中):
def default_user_id(self):
return self.env.user if ("default_user_id" not in self.env.context) else self.env.context["default_user_id"]
user_id = fields.Many2one('res.users', string="User", required=True,
default=default_user_id)
我创建了另一个模块来继承它并更改字段的默认值 user_id 但它无法正常工作,日志中没有任何错误,我该如何解决这个问题?
def default_user_id(self):
return False
Please check this
user_id = fields.Many2one('res.users', string='User',readonly=True, default=lambda self: self.env.user)
您正在直接在字段定义上链接方法。因此,重写该方法已经不够了。只需使用 default
作为唯一参数再次定义字段 user_id
并使用您的新方法:
原机型:
class MyModel(models.Model):
_name = "my.model"
def default_user_id(self):
return self.env.context.get("default_user_id", self.env.user)
user_id = fields.Many2one(
comodel_name='res.users', string="User", required=True,
default=default_user_id)
继承模型:
class MyModelInherit(models.Model):
_inherit = "my.model"
def default_user_id(self):
return self.env['res.users']
user_id = fields.Many2one(default=default_user_id)