You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 14中如何将base.view_partner_form的city字段设为必填?

Odoo 14中设置res.partner的city字段为必填项无效的解决办法

我正在Odoo 14中创建自定义模块,想要将base.view_partner_form视图里的city字段设置为必填项。尝试了以下代码:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <record id="required_city_field" model="ir.ui.view">
            <field name="name">required.city.field</field>
            <field name="model">res.partner</field>
            <field name="inherit_id" ref="base.view_partner_form" />
            <field name="arch" type="xml">
            <field name="city" position="attributes">
                    <attribute name="required">1</attribute>
            </field>
            </field>
        </record>
    </data>
</odoo>

但该代码没有生效,也没有报错,完全没有任何反应。设置zip等其他字段为必填时却能正常工作。猜测可能是存在其他类或继承的修改,但无法找到原因。尝试过相关讨论方案,仍然无法将city字段设为必填。


可行解决方向:

  1. 提升视图继承优先级
    Odoo中若有其他模块也继承了base.view_partner_form并修改city字段,后续加载的模块会覆盖你的设置。给你的视图添加更高优先级(默认优先级为16,设为20即可):

    <record id="required_city_field" model="ir.ui.view">
        <field name="name">required.city.field</field>
        <field name="model">res.partner</field>
        <field name="inherit_id" ref="base.view_partner_form" />
        <field name="priority">20</field>
        <field name="arch" type="xml">
            <field name="city" position="attributes">
                <attribute name="required">1</attribute>
            </field>
        </field>
    </record>
    
  2. 直接在模型层设置必填
    视图层面的必填可能被字段定义或业务逻辑覆盖,直接修改模型字段属性更可靠。创建模型继承文件:

    from odoo import models, fields
    
    class ResPartner(models.Model):
        _inherit = 'res.partner'
    
        city = fields.Char(required=True)
    

    此方式会强制字段本身为必填,不受视图继承影响。

  3. 排查动态视图修改逻辑
    部分模块会通过Python代码动态修改视图属性(比如根据用户权限、合作伙伴类型),可搜索项目代码中是否存在fields_view_get方法对city字段的动态处理。

  4. 清除缓存并重新升级模块
    确保完全升级自定义模块,同时清除Odoo服务器端视图缓存及浏览器缓存,缓存残留可能导致修改不生效。

内容的提问来源于stack exchange,提问作者SallySalty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 21:29:57