vistas transitorio tipos modelo estructura diccionario datos crear campos forms view model openerp

forms - transitorio - tipos de campos odoo



Modelos/vistas de OpenERP: objeto relacionado en lĂ­nea (4)

Hay un par de formas de especificar la vista para campos relacionados como este. Puedes usar el contexto de esta manera:

<field name="order_line" colspan="4" nolabel="1" context="{''form_view_ref'': ''module.view_id'', ''tree_view_ref'': ''model.view_id''}"/>

También puede especificar la vista completa para el registro secundario como una subvista dentro de la vista primaria como esta:

<!-- <=== order_line is a one2many field --> <field name="order_line" colspan="4" nolabel="1"> <form> <field name="qty"/> ... </form> <tree> <field name="qty"/> ... </tree> </field>

He instalado el crm incorporado en el módulo de OpenERP 6.1.

Como resultado, ahora tengo res.lead activo y visible en "Ventas-> Oportunidades".

Me gustaría editar este objeto / vista para mostrar la dirección de facturación del socio.

Como quiero hacer esto en el formulario Opporunities, ya hay un partner_id.

Copiando otro módulo, definí mi nuevo módulo así:

class crm_lead(osv.osv): _name = _inherit = ''crm.lead'' _columns = { ''billing_address_id'': fields.many2one(''res.partner.address'', ''Partner Billing Address'', domain="[(''partner_id'',''='',partner_id),(''type'',''in'',[''invoice'', ''default''])]"), }

Y cambié mi update_xml a:

<record model="ir.ui.view" id="crm_case_form_view_oppor"> <field name="name">Opportunity form (inherit)</field> <field name="model">crm.lead</field> <field name="inherit_id" ref="crm.crm_case_form_view_oppor"/> <field name="arch" type="xml"> <data> <separator string="Details" position="replace" /> <field name="description" position="replace"> <group colspan="2" col="4"> <separator colspan="4" string="Billing" /> <field widget="one2many_list" mode="form,tree" name="billing_address_id" colspan="4" nolabel="1" /> </group> <group colspan="2" col="4"> <separator colspan="4" string="Details" /> <field name="description" nolabel="1" colspan="4" /> </group> </field> </data> </field> </record>

El problema es que el objeto relacionado muestra todos los campos relacionados (como supongo que se esperaría). En particular, muestra los campos partner_id y company, que me gustaría ocultar, ya que deberían ser / heredar de forma predeterminada de esta oportunidad (o del socio vinculado).

¿Cómo puedo ocultar estos campos? No puedo simplemente agregar un grupo de campos ''relacionados'', ya que hay potencialmente más de una dirección de facturación.

¡Gracias por la ayuda!

Editar: para ser más claros, una oportunidad solo debe tener una única dirección de facturación elegida, elegida entre las direcciones de facturación / predeterminadas del socio. Debe mostrarse en línea para permitir una fácil edición.


En cualquier campo de relación OE puede definir la vista intencional como:

<field name="" mode="tree,form"> <!--Internal tree view for your Relation field model--> <tree> </tree> <!--Internal Form view for your Relation field model--> <form> </form> </field>

Ejemplo en Complementos 1 Haga clic en Ejemplo 2 Haga clic para ver Ejemplo

Espero que esto te ayudará,.


Ahora bien, si quieres detallar los detalles específicos en tu archivo m2o, entonces tenemos una manera opcional también donde tienes que sobre el nombre de def name_get de tu modelo relacional, namge get look like:

name_get(cr, user, ids, context=None) Returns the preferred display value (text representation) for the records with the given ids. By default this will be the value of the name column, unless the model implements a custom behavior. Can sometimes be seen as the inverse function of name_search(), but it is not guaranteed to be. Rtype : list(tuple) Return : list of pairs (id,text_repr) for all records with the given ids.

Entonces, aquí en este método puedes decidir qué cadena quieres que muestre tu campo relacional. Ejemplo

Esto arreglará tu problema parcialmente, supongo.


OK, estaba un poco confundido porque pones un widget one2many en un campo many2one.

Si desea controlar cómo se muestra un campo one2many, use la subvista o los métodos de contexto que mencioné en mi otra respuesta .

Si desea controlar cómo se muestra un campo many2one, es posible que pueda usar campos relacionados que extraigan campos del registro que seleccionó, pero lo dudo. La opción de solo lectura podría funcionar, pero no creo que tenga sentido editar múltiples campos relacionados y poder cambiar el registro seleccionado. Es posible que pueda hackear juntos algunos campos de función con una función de tienda que le permite volver a escribir en el registro relacionado, pero parece que realmente podría confundir a los usuarios.