python 我可以继承数据odoo吗?

xghobddn  于 12个月前  发布在  Python
关注(0)|答案(2)|浏览(253)

我从OCA那里得到了这个:

<odoo noupdate="1">
    <record id="medical_specialty_adult_mental" model="medical.specialty">
        <field name="code">408467006</field>
        <field name="name">Adult mental illness</field>
    </record>

    <record id="medical_specialty_anesthetics" model="medical.specialty">
        <field name="code">394577000</field>
        <field name="name">Anesthetics</field>
    </record>

    others speciality .....
</odoo>

字符串
我的问题是:我如何才能继承一个专业?

s2j5cfk0

s2j5cfk01#

要继承它,你必须以与原始模块中定义的相同方式编写它,不同之处在于,在id中,将原始模块的名称放在前面,然后是一个点和id。
你只需要把你要修改的字段。

<odoo noupdate="1">
    <record id="original_module_name.medical_specialty_adult_mental" model="medical.specialty">
        <field name="name">new_name</field>
    </record>

    <record id="original_module_name.medical_specialty_anesthetics" model="medical.specialty">
        <field name="code">new_code</field>
    </record>
</odoo>

字符串
记得将文件添加到manifest

55ooxyrt

55ooxyrt2#

为了继承这些记录,首先,您需要使noupdate值为False。为此,请使用以下函数:

<function name="write" model="ir.model.data">
    <function name="search" model="ir.model.data">
        <value eval="[('name', '=', 'medical_specialty_adult_mental'), ('module', '=', 'MODULE_NAME_HERE')]" />
    </function>
    <value eval="{'noupdate': False}" />
</function>

字符串
然后,您可以进行您想要的修改:

<record id="MODULE_NAME_HERE.medical_specialty_adult_mental" model="medical.specialty">
    <field name="code">408467006</field>
    <field name="name">Adult mental illness</field>
    <field name="NEW_FIELD">NEW_FIELD_VALUE</field>
</record>


在此之后,您可以再次将此记录的noupdate值设置为True

<function name="write" model="ir.model.data">
    <function name="search" model="ir.model.data">
        <value eval="[('name', '=', 'medical_specialty_adult_mental'), ('module', '=', 'MODULE_NAME_HERE')]" />
    </function>
    <value eval="{'noupdate': True}" />
</function>


不要忘记将MODULE_NAME_HERE替换为正确的模块名称。

相关问题