es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar un campo a otro módulo en Odoo 14.

¡Buen día!
¿Cómo puedo agregar un campo al módulo de pagos aquí está mi código, pero obtengo un error:

odoo.exceptions.ValidationError: Error al validar la vista:

El campo "term_number" no existe en el modelo "account.payment"

Nombre de la vista: account.payment
Contexto del error:
 vista: ir.ui.view(1133,)
 xmlid: view<em>account</em>payment<em>form
 modelo de vista: account.payment
 vista principal: ir.ui.view(562,)
 archivo: c:\program files\odoo 14\server\odoo\addons\doc</em>dte_school\views\payment.xml

Aquí está mi código XML:

<record id="view_account_payment_form" model="ir.ui.view">
    <field name="name">account.payment</field>
    <field name="model">account.payment</field>
    <field name="inherit_id" ref="account.view_account_payment_form"></field>
    <field name="arch" type="xml">
        <field name="amount" position="after">
            <field name="term_number"></field>
        </field>
    </field>
</record>

Aquí está mi código Python:

from odoo import api,fields,models,_

class AccountPayment(models.Model):
    _inherit = 'account.payment'
    _inherit = 'dte_school'

    term_number = fields.Many2one('dte_school')
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar un campo al módulo de pago en Odoo, es necesario modificar el código XML de la vista que muestra el formulario de pago. El código XML que proporcionó está casi correcto, pero necesitará hacer algunos cambios:

    <record id="view_account_payment_form_inherit" model="ir.ui.view">
        <field name="name">account.payment.form.inherit</field>
        <field name="model">account.payment</field>
        <field name="inherit_id" ref="account.view_account_payment_form"></field>
        <field name="arch" type="xml">
            <field name="amount" position="after">
                <field name="term_number"></field>
            </field>
        </field>
    </record>
    

    Tenga en cuenta que cambié el ID de la vista a “view_account_payment_form_inherit” y agregué el parámetro “_inherit” a la definición de la clase. Esto asegurará que su código anule la vista existente en lugar de crear una nueva.

    También eliminé la declaración de herencia de campo adicional que tenía, ya que no es necesaria. Finalmente, asegúrese de que su código Python esté correctamente indentado y tenga el tipo de campo correcto (Many2one en este caso).

    Una vez que haya realizado estos cambios, actualice su módulo e inténtelo de nuevo. Esto debería agregar el nuevo campo al formulario de pago sin ningún error.

Comments are closed.