Error en vista en una hernencia de res_partner

614 views
Skip to first unread message

Daniel Acuña

unread,
Oct 30, 2016, 11:05:04 AM10/30/16
to odoo-Argentina - Preguntas y respuestas para personalizadores
Hola comunidad.
Estoy usando odoo 9 en windows 10.
Mi duda es al crear una vista de un modelo que he creado. Este modelo hereda de res_partner.

class motos_wclie(models.Model):
   _name = 'res.partner'
   _inherit = 'res.partner'
 
   REGI = fields.Integer('REGISTRO', help='???')
  APEL = fields.Char('Apellido', size=40, help='???')

  

En la vista de "w_clie_view.xml" quiero tener un tree y un form con mis campos. Lo cree de la siguiente manera.
<openerp>
 <data>
   <!-- explicit list view definition -->
       <record id="wclie_res_partner_tree" model="ir.ui.view">
           <field name="name">Mis_clientes</field>
           <field name="model">res.partner</field>
           <field name="arch" type="xml">
               <field name="REGI"/>
               <field name="APEL"/>
           </field>    
       </record>
             
    <!-- explicit form view definition -->

        <record id="wclie_res_partner_form" model="ir.ui.view">
           <field name="name">wclie.res.partner.Form</field>
           <field name="model">res.partner</field>
           <field name="arch" type="xml">
               <field name="REGI"/>
               <field name="APEL"/>
           </field>
       </record>
 
    <!-- Action  -->
   <record model="ir.actions.act_window" id="wclie_res_partner_action">
     <field name="name">wclie.res.partner.action</field>
     <field name="res_model">res.partner</field>
     <field name="view_type">form</field>
     <field name="view_mode">tree,form</field>
   </record>

    <!-- Aca estan los Menues que los saque para esta explicacion -->
 </data>
</openerp>


El Error que me sale es...
File "C:\Odoo9.0-20160910\server\openerp\fields.py", line 1537, in convert_to_cache
   raise ValueError("Wrong value for %s: %r" % (self, value))
ParseError: "Wrong value for ir.ui.view.type: 'data'" while parsing file:///C:/Odoo9.0-20160910/server/openerp/addons/motos/views/w_clie_view.xml:4, near
<record id="xxx_res_partner_tree" model="ir.ui.view">
                       <field name="name">Mis_clientes</field>
                       <field name="model">res.partner</field>
                       <field name="arch" type="xml">
                               <data><field name="REGI"/>
                               <field name="APEL"/>
                       </data></field>
       </record>



Lo que noto es que en el Error me agrega un <data> antes de <field name="REGI"/>
 y lo cierrar </data> despues de <field name="APEL"/>
 Que no estan en el codigo original.

Agradezco su ayuda.

Gustavo Marino

unread,
Oct 30, 2016, 3:58:54 PM10/30/16
to odoo-Argentina - Preguntas y respuestas para personalizadores
Daniel:
Cuando definis modelos nuevos, las vistas tambien serán nuevas.
Por lo tanto, definir un tree o form se hace arrancando precisamente con esos elementos.
Usá cualquier definición de base de una vista (es decir no una vista heredada que está modificando una vista definida en otro módulo) como modelo.
Saludos

Gustavo Marino

unread,
Oct 30, 2016, 4:11:41 PM10/30/16
to odoo-Argentina - Preguntas y respuestas para personalizadores
Daniel:
Se me pasó: para que puedas ver tu tree y form vas a tener que crear una acción. Los casos donde se crean vistas normalmente tienen las acciones a continuación.
Saludos

Daniel Acuña

unread,
Oct 30, 2016, 7:56:22 PM10/30/16
to odoo-Argentina - Preguntas y respuestas para personalizadores
Hola Gustavo. Gracias por tu respuesta. Pensé que estaba haciendo todo lo que me digiste en el archivo de las vistas.
El cambio que probé (sin estar seguro si es lo que me sugeriste) es remplazar en tree, form y action  "<field name="model">res.partner</field>" por " <field name="model">motos.wclie</field>" pero sigue el mismo error.

El domingo, 30 de octubre de 2016, 17:11:41 (UTC-3), Gustavo Marino escribió:
Daniel:

Daniel Acuña

unread,
Oct 30, 2016, 10:01:14 PM10/30/16
to odoo-Argentina - Preguntas y respuestas para personalizadores

Errores que tenia mi código.

Me faltaron colocar los tags <tree></tree> y <form></form> Con esto se me fue el error que me tiraba. Pero sigo con problema.
 resumo el código donde creo está mi error.
El modelo es...
class motos_wclie(models.Model):
_name = 'res.partner' 
_inherit = 'res.partner' 
REGI = fields.Integer('REGISTRO', help='???')
APEL = fields.Char('Apellido', size=40, help='???')

La vista es...
<record id="wclie_res_partner_tree" model="ir.ui.view">
    <field name="name">Mis_clientes</field>
<field name="model">motos.wclie</field>
<field name="arch" type="xml">
<tree>
<field name="REGI"/>
<field name="APEL"/>
</tree>
</field>
</record>
Con esta vista tree me tira el siguiente error
Error details:
Model not found: motos.wclie

Error context:
View `Mis_clientes`
[view_id: 3296, xml_id: motos.wclie_res_partner_tree, model: motos.wclie, parent_id: no/disponible]
None" while parsing file:///C:/Odoo9.0-20160910/server/openerp/addons/motos/views/w_clie_view.xml:4, near
<record id="wclie_res_partner_tree" model="ir.ui.view">
                        <field name="name">Mis_clientes</field>
                        <field name="model">motos.wclie</field>
                        <field name="arch" type="xml">
                                <tree>
                                        <field name="REGI"/>
                                        <field name="APEL"/>
                                </tree>
                        </field>
</record>

Probé en cambiar el motos.wclie por res.partner, funciona pero me trae un formulario que yo no cree tanto en tree como en form. Debe ser un formulario base.
<record id="wclie_res_partner_tree" model="ir.ui.view">
    <field name="name">Mis_clientes</field>
<field name="model">res.partner</field>
<field name="arch" type="xml">
<tree>
<field name="REGI"/>
<field name="APEL"/>
</tree>
</field>
</record>

adjunto imagen de las dos views.


¿Cómo hago para tener mis vistas?

Gustavo Marino

unread,
Nov 3, 2016, 11:31:33 AM11/3/16
to odoo-Argentina - Preguntas y respuestas para personalizadores
Daniel:
Vamos por pasos

El nombre de la clase no cumple ningun rol y no es tenida en cuenta por Odoo. Por lo tanto, la definición del modelo debe ser:

class motos_wclie(models.Model):
_name = 'motos.wclie' 
_inherit = 'res.partner' 
REGI = fields.Integer('REGISTRO', help='???')
APEL = fields.Char('Apellido', size=40, help='???')

En la definición de las vista tree está correcta. Con el cambio anterior te va a cargar. El problema es que no vas a tener ninguna entrada de menu donde puedas ver tus modelos.

Para eso vas a tener que crear una acción y una entrada de menu. Fijate en cualquier módulo como lo hace.

La curva de aprendizaje de Odoo es compleja, pero para el nivel inicial hay mucha información googleando o en la misma documentación del sistema.
Vas a tener que leer
Saludos

Daniel Acuña

unread,
Nov 4, 2016, 9:37:22 AM11/4/16
to odoo-Argentina - Preguntas y respuestas para personalizadores
Gustavo. 
Mi idea es que los clientes "res_partner" y "motos_wclie" sean uno solo. Según entiendo si lo hago de la manera que vos me decís son dos modelos diferentes, lo que quiero es que las aplicaciones que instale después (CRM, contabilidad, etc.) se relacionen con mis clientes. Por lo que entendí en esta explicación.

No hay relación entre "res_partner" y "motos_wclie". O estoy equivocado en algún concepto?






Gustavo Marino

unread,
Nov 4, 2016, 10:28:15 AM11/4/16
to odoo-Argentina - Preguntas y respuestas para personalizadores
Daniel:
Son dos caminos posibles: crear un nuevo modelo (el caso que interpreté que buscabas) o el caso que planteas que es extender o modificar un modelo existente, manteniendo el objeto para otras aplicaciones

Cuando modificas un modelo existe tenes que modificar las vistas existentes. Esto es tomas como base las que estan y le agregas o sacas campos o modificas el xml que la define para que se muestre distinta.

res.partner está definido en la base y hay muchos módulos que lo modifican. Por ejemplo account, donde podes encontrar ejemplos donde extienden la vista base para agregarle campos.

En estos casos, en vez de 'definir' la vista, lo que haces a traves de una sintaxis específica es modificar el xml de la vista base. Busca en account/partner_view.xml la definición de view_partner_property_form como ejemplo

El caso particular de res.partner lo modifcian muchos módulos, por lo que hay que tener cuidado con las modificaciones por las posibles consecuencias en otros módulos. Por ejemplo, como la modificación se hace buscando campos existentes, si cambias algo en la definición de un campo de la vista puede tener consecuencias en otro módolo que no sea tuyo que usa ese campo como referencia para introducir modificaciones

Saludos
Reply all
Reply to author
Forward
0 new messages