Odoo中文社区可以通过以下三个域名访问:shine-it.net , odoocn.org,odoo.net.cn

原论坛用户的基本信息和发帖这里都予以保留,请注意:原论坛用户无需重新注册新用户,但是您的密码需要重置

开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

如果您登录系统碰到问题,请在微信公众号留言:

【已解决】扩展partner模型,新建partner保存后,country_id的字段无法保存数据,其他字段可以正确保存



  • 扩展的partner模型代码:
    [code]
    class youxiang_partner(models.Model):
        _inherit = 'res.partner'

        name = fields.Char()
        province_id = fields.Many2one(comodel_name="youxiang.province", string=u"省份", required=False, )
        city_id = fields.Many2one(comodel_name="youxiang.city", string=u"城市", required=False, )
        area_id = fields.Many2one(comodel_name="youxiang.area", string=u"区域", required=False, )
    [/code]
    修改地址的显示顺序:
    [code]
            <record id="cn_view_partner_form" model="ir.ui.view">
                <field name="name">res.partner.form.inherit</field>
                <field name="model">res.partner</field>
                <field name="inherit_id" ref="base.view_partner_form"/>
                <field name="arch" type="xml">
                    <!--隐藏原来的地址视图-->
                    <xpath expr="//form/sheet/group/group/div/field[@name='country_id']" position="attributes">
                        <attribute name="invisible">1</attribute>
                    </xpath>
                    <xpath expr="//form/sheet/group/group/div/div[@class='address_format']" position="attributes">
                        <attribute name="invisible">1</attribute>
                    </xpath>
                    <xpath expr="//form/sheet/group/group/div/field[@name='street']" position="attributes">
                        <attribute name="invisible">1</attribute>
                    </xpath>
                    <xpath expr="//form/sheet/group/group/div/field[@name='street2']" position="attributes">
                        <attribute name="invisible">1</attribute>
                    </xpath>

                    <!-- 重编地址格式 -->
                    <xpath expr="//button[@name='open_parent']" position="after">
                        <div>
                            <field name="country_id" placeholder="国家" class="oe_no_button" style="width: 50%%"
                                  options='{"no_open": True, "no_create": True}'
                                  attrs="{'readonly': [('use_parent_address','=',True)]}"
                                  required="1"
                            />
                            <field name="province_id" placeholder="省份" class="oe_no_button" style="width: 50%%"
                                  options='{"no_open": True,}'
                                  attrs="{'readonly': [('use_parent_address','=',True)]}"
                                  required="1"
                            />
                        </div>
                        <div>
                            <field name="city_id" placeholder="城市" class="oe_no_button" style="width: 50%%"
                                  options='{"no_open": True,}'
                                  attrs="{'readonly': [('use_parent_address','=',True)]}"
                                  required="1"
                            />
                            <field name="area_id" placeholder="区" class="oe_no_button" style="width: 50%%"
                                  options='{"no_open": True,}'
                                  attrs="{'readonly': [('use_parent_address','=',True)]}"
                                  required="1"
                            />
                        </div>
                        <field name="street" placeholder="详细地址..."
                              attrs="{'readonly': [('use_parent_address','=',True)]}"
                              required="1"
                        />
                    </xpath>
            </record>

        </data>
    </openerp>
    [/code]

    保存partner后,页面有显示已选国家的数据,但是查看数据库country_id字段是没有数据的,刷新页面后,country_id显示空白



  • 扩展的partner模型代码:
    [code]
    class youxiang_partner(models.Model):
        _inherit = 'res.partner'

        name = fields.Char()
        province_id = fields.Many2one(comodel_name="youxiang.province", string=u"省份", required=False, )
        city_id = fields.Many2one(comodel_name="youxiang.city", string=u"城市", required=False, )
        area_id = fields.Many2one(comodel_name="youxiang.area", string=u"区域", required=False, )
    [/code]
    修改地址的显示顺序:
    [code]
            <record id="cn_view_partner_form" model="ir.ui.view">
                <field name="name">res.partner.form.inherit</field>
                <field name="model">res.partner</field>
                <field name="inherit_id" ref="base.view_partner_form"/>
                <field name="arch" type="xml">
                    <!--隐藏原来的地址视图-->
                    <xpath expr="//form/sheet/group/group/div/field[@name='country_id']" position="attributes">
                        <attribute name="invisible">1</attribute>
                    </xpath>
                    <xpath expr="//form/sheet/group/group/div/div[@class='address_format']" position="attributes">
                        <attribute name="invisible">1</attribute>
                    </xpath>
                    <xpath expr="//form/sheet/group/group/div/field[@name='street']" position="attributes">
                        <attribute name="invisible">1</attribute>
                    </xpath>
                    <xpath expr="//form/sheet/group/group/div/field[@name='street2']" position="attributes">
                        <attribute name="invisible">1</attribute>
                    </xpath>

                    <!-- 重编地址格式 -->
                    <xpath expr="//button[@name='open_parent']" position="after">
                        <div>
                            <field name="country_id" placeholder="国家" class="oe_no_button" style="width: 50%%"
                                  options='{"no_open": True, "no_create": True}'
                                  attrs="{'readonly': [('use_parent_address','=',True)]}"
                                  required="1"
                            />
                            <field name="province_id" placeholder="省份" class="oe_no_button" style="width: 50%%"
                                  options='{"no_open": True,}'
                                  attrs="{'readonly': [('use_parent_address','=',True)]}"
                                  required="1"
                            />
                        </div>
                        <div>
                            <field name="city_id" placeholder="城市" class="oe_no_button" style="width: 50%%"
                                  options='{"no_open": True,}'
                                  attrs="{'readonly': [('use_parent_address','=',True)]}"
                                  required="1"
                            />
                            <field name="area_id" placeholder="区" class="oe_no_button" style="width: 50%%"
                                  options='{"no_open": True,}'
                                  attrs="{'readonly': [('use_parent_address','=',True)]}"
                                  required="1"
                            />
                        </div>
                        <field name="street" placeholder="详细地址..."
                              attrs="{'readonly': [('use_parent_address','=',True)]}"
                              required="1"
                        />
                    </xpath>
            </record>

        </data>
    </openerp>
    [/code]

    保存partner后,页面有显示已选国家的数据,但是查看数据库country_id字段是没有数据的,刷新页面后,country_id显示空白



  • <xpath expr="//form/sheet/group/group/div/field[@name='country_id']" position="replace">
                    </xpath>


  • 管理员

    你是把原来的字段隐藏了,一个视图里面如果有多个一样的字段定义,只有一个会显示出对应的字段值。参考楼上Jeff的方法,替换原来字段。



  • 感觉姐夫Jeff和Joshua的回答,问题得到解决。

    由于我view中的country_id是使用invisible属性隐藏了该字段,再在后面重新添加country_id,这个做法是错误的,这样每次保存form都是获取第一个隐藏的country_id字段值,所以一直为空,应该修改代码如下:
    [code]
                    <xpath expr="//form/sheet/group/group/div/field[@name='country_id']" position="replace">
                    </xpath>
    [/code]


登录后回复
 

与 Odoo 中文社区 的连接断开,我们正在尝试重连,请耐心等待