odoo14 | odoo14的国家/省/市区县联动,不自写模块仅通过odoo来实现的方法

现在全网有一些教程会教自己写一个三方模块来满足地址选择功能的需求,其实可以通过原生模块的功能来基本的满足

注意:

效果如下图所示:

这里需要介绍几个模型

res.country         国家
res.country.state   省份
res.city            市/区/县

在需要加入地址的模型中自定义自己的字段,下面展示我这里自定义的字段

country_id = fields.Many2one('res.country', string='国家')
state_ids = fields.Many2one('res.country.state', string='省份', domain="[('country_id', '=', country_id)]")
city_ids = fields.Many2one('res.city', string='市/县/区', domain="[('state_id', '=', state_ids)]")
address_inf = fields.Char(string='详细地址')

视图可以按上面的图所展示的样式写

<label for="address_inf" string="地址"/>
<div class="o_address_format">
    <field name="country_id" placeholder="国家" class="o_address_country"/>
    <field name="state_ids" placeholder="省份" class="o_address_state"/>
    <field name="city_ids" placeholder="市/区/县" class="o_address_city"/>
    <field name="address_inf" placeholder="仅需填写到社区范围即可"/>
</div>

但这一波操作后,会发现市/区/县字段是没有预设值的,所以现在就需要来安装下面这个模块

 安装后会自动安装开票模块,因为这个模块就是开票模块的子功能,所以现在会出现开票模块的菜单,为了不影响系统使用,现在要对这个菜单进行屏蔽

<menuitem id="account.menu_finance" active="False"/>

在视图中增加这一段xml代码,这是最简单的屏蔽顶级菜单的方法。

还可以增加方法,可以在修改一些上级选项时清空一下子级选项

    @api.onchange('province_id')
    def onchange_country_clean_state_ids(self):
        self.city_id = False
        self.county_id = False

    @api.onchange('state_ids')
    def onchange_state_ids_clean_city(self):
        self.county_id = False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值