Odoo 14:如何在注册中添加其他字段,如地址等

2022-03-12 00:00:00 python odoo

问题描述

我想在Odoo注册表单/视图(如Address)中添加一些额外的字段,还想知道它保存注册数据(表)的位置,以便我可以引用/跟踪与用户相关的活动。为了实现这一点,请指导我必须采取的步骤。 问候


解决方案

您需要继承auth_signup.fields模板才能将该字段添加到注册页。以下代码将street添加到注册字段。

<odoo>
    <template id="signup_fields" inherit_id="auth_signup.fields" name="Auth Signup street form field">
        <xpath expr="//div[last()]" position="after">
            <div class="form-group field-login">
                <label for="street">Street</label>
                <input type="text" name="street" id="street" class="form-control form-control-sm"/>
            </div>
        </xpath>
    </template>
</odoo>

单击submit按钮时,将调用web_auth_signup控制器方法。控制器要做的第一件事是调用do_signup准备值,并调用res.users的signup方法将值写入数据库。

若要保存street字段值,可以重写_signup_with_values方法:

from odoo.addons.auth_signup.controllers.main import AuthSignupHome


class AuthSignupStreet(AuthSignupHome):
    def _signup_with_values(self, token, values):
        context = self.get_auth_signup_qcontext()
        values.update({'street': context.get('street')})
        super(AuthSignupStreet, self)._signup_with_values(token, values)

相关文章