如何覆盖odoo new api中字段的默认功能

时间:2017-03-01 10:57:42

标签: openerp odoo-9

我有一个字段调用函数来获取默认值(在模块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

2 个答案:

答案 0 :(得分:4)

  

请检查

user_id = fields.Many2one('res.users', string='User',readonly=True, default=lambda self: self.env.user)

答案 1 :(得分:2)

您直接在字段定义上链接方法。所以重写方法已经不够了。只需使用user_id作为唯一参数再次定义字段default,然后使用新方法:

原始模型:

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)