覆盖Odoo10中的字段的问题(继承)

时间:2019-04-24 14:03:32

标签: inheritance odoo

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

在Odoo中安装该应用程序后,我看到over_credit字段(res.partner)被覆盖,默认情况下更改为True。没关系。 问题是,当我尝试覆盖另一个字段(来自res_partner的credit_limit)时,它没有改变。然后,我添加了一个新字段(x_riesgo_subjetivo),但它出现在窗体中,但是没有选择的可能(这是“选择”字段)。它已经作为x_riesgo_subjetivo在数据库中创建。

代码是:

models / partner.py(在models文件夹的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)

views / 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中的某些配置?

谢谢。

1 个答案:

答案 0 :(得分:0)

首先,模型声明中既没有冒号(:),也缺少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

modified res.partner form screenshot