首页 > 解决方案 > 覆盖 Odoo10 中的字段的问题(继承)

问题描述

我已经下载了一个继承 res.partner 的 Odoo10 应用程序: https ://www.odoo.com/apps/modules/10.0/partner_credit_limit/

在我的 Odoo 中安装该应用程序后,我看到字段 over_credit (res.partner) 被覆盖,并且默认更改为 True。没关系。问题是当我尝试覆盖另一个字段(credit_limit,来自 res_partner)时,它不会改变。然后,我添加了一个新字段 (x_riesgo_subjetivo),但它出现在表单中,但无法选择(它是一个选择字段)。它已经在数据库中创建为 x_riesgo_subjetivo。

代码是:

models/partner.py(在模型文件夹的 init 中声明)

from odoo import fields, models
class ResPartner(models.Model)
_inherit = 'res.partner'
over_credit = fields.Boolean('Allow Over Credit? modified', default=True)
credit_limit = fields.Float(digits=0, required=True, default=1000.0, help="Help Text")
x_riesgo_subjetivo = fields.Selection([('good', 'Good Debtor'), ('normal', 'Normal Debtor'), ('bad', 'Bad Debtor')], string='Degree of trust you have in this debtor', default='normal', company_dependent=True)

意见/partner_view.xml

<?xml version="1.0" encoding="utf-8"?>
<odoo>

    <record id="view_category_property_form" model="ir.ui.view">
        <field name="name">partner.over.credit.limit.form.inherit</field>
        <field name="model">res.partner</field>
        <field name="type">form</field>
        <field name="inherit_id" ref="account.view_partner_property_form"/>
        <field name="arch" type="xml">
            <field name="credit" position="after">
                <field name="credit_limit"/>
                <field name="over_credit"/>
                <field name="x_riesgo_subjetivo"/>
            </field>
        </field>
    </record>
</odoo>

此外,当我将 over_credit 字段中的 default=True 更改为 default=False 时,在我创建新合作伙伴时它不会更改。

你能帮我发现我做错了什么吗?我从 res.partner 继承,当我尝试应用程序时,一切似乎运行正常。但是当我添加我的更改时,它不能按我的意愿工作。也许我错过了 Odoo 中的一些配置?

谢谢你。

标签: inheritanceodoo

解决方案


首先,模型声明中缺少冒号 (:) 和 Python 所需的缩进:

from odoo import fields, models

class ResPartner(models.Model):
  _inherit = 'res.partner'
  over_credit = fields.Boolean('Allow Over Credit? modified', default=True)
  credit_limit = fields.Float(digits=0, required=True, default=1000.0, help="Help Text")
  x_riesgo_subjetivo = fields.Selection([('good', 'Good Debtor'), ('normal', 'Normal Debtor'), ('bad', 'Bad Debtor')], string='Degree of trust you have in this debtor', default='normal', company_dependent=True)

另一方面,我正在 v12 上测试您的代码,并且该字段credit不再存在,所以我使用了vat,它就像一个魅力。

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="view_category_property_form" model="ir.ui.view">
        <field name="name">partner.over.credit.limit.form.inherit</field>
        <field name="model">res.partner</field>
        <field name="type">form</field>
        <field name="inherit_id" ref="account.view_partner_property_form"/>
        <field name="arch" type="xml">
            <field name="vat" position="after">
                <field name="credit_limit"/>
                <field name="over_credit"/>
                <field name="x_riesgo_subjetivo"/>
            </field>
        </field>
    </record>
</odoo>

如果您需要,我可以将 v12 的最小工作模块上传到 github。

顺便说一句,你有文件名为__init__.py包含

from . import models

models/__init__.py包含

from . import partner

?

修改后的 res.partner 表单截图


推荐阅读