2010-10-08 20 views
8

¿Alguien me puede explicar algo sobre campos relacionados? Por ejemplo -¿Cuál es el uso de campos relacionados en OpenERP?

  • Cómo se utiliza
  • ¿Cómo se puede ayudar
  • para qué tipo de escenario que debo usar fields.related

Si alguien puede proporcionar un pequeño ejemplo de verdad uso de fields.related lo agradecería.

Respuesta

9

Le permite extraer un campo de una tabla relacionada. Puede encontrar más detalles en el developer book, y un ejemplo para mirar es el campo order_partner_id de la clase sale_order_line. En la versión 5.14, está en la línea 806 de addons/sale/sale.py.

A menudo me parece que quiero mostrar un campo en una lista, pero está en un registro principal en lugar de en la tabla real que estoy enumerando.

+0

Estaba pensando lo mismo, he probado el ejemplo de también es un libro para desarrolladores, es genial, en la versión anterior que utilizo para lograr esto por campo de función, es genial tener campos relacionados ahora, ¡funciona hasta el nivel! ¡¡¡Bingo !!! - Gracias – necromancer

1

Puede encontrar un ejemplo en la documentación del desarrollador de OpenERP, en la normalización de la base de datos se llama Transitive dependency.

8

Al usar un campo relacionado, primero debe seleccionar qué campo relacionar. Por ejemplo, estoy creando un nuevo módulo para agregar detalles de los estudiantes. Aquí el alumno es realmente el compañero. Por lo tanto, se toma _rec_name='partner_id'. En res.partner es posible que haya visto el campo ref. El valor en el campo ref se toma como internal_number para el módulo de estudiante.

Así que lo que hacemos aquí es

class student(osv.osv): 
    _name='student' 
    _rec_name='partner_id' 
    _columns ={ 
      'partner_id':fields.many2one('res.partner','Name'), 
      'internal_number':fields.related(
        'partner_id', 
        'ref', 
        type='char', 
        size=16, 
        string='Internal Number', 
        ), 
      } 

Si el campo que queremos mostrar como campo relacionado es un campo de selección, entonces usted tiene que proporcionar type='selection', y selection=[(case1,case1),(case2,case2),...], una lista de tuplas. Si se trata de un campo many2one, entonces type='many2one' y relation='model_name'.

+0

cómo agregar un campo relacionado many2one entonces? – m3asmi

+0

'country_id': fields.related ('partner_id', 'country_id', type = 'many2one', relation = 'res.country', string = 'País'), – OmaL

1

campos relacionados lleva el control a otra tabla la tabla principal tendrá una relación de onetomany con la tabla secundaria y la tabla secundaria tiene una relación manytoone con respecto a la tabla padre. por ejemplo: la account.invoice a account.invoice.line con el campo siguiente

'Invoice_Line': fields.one2many ('account.invoice.line', 'invoice_id', 'Factura Lines, de sólo lectura = True, states = {'draft': [('readonly', False)]}),

y account.invoice.line se refiere a account.invoice con el siguiente código al revés.

'invoice_id': fields.many2one ('account.invoice', 'Factura de referencia', ondelete = 'en cascada', seleccione = True),