2015-11-23 18 views
5

Sto cercando di recuperare il campo del commento (note interne del cliente) da res_partner al modulo di fatturazione conto. Ora voglio solo stamparlo in seguito, lo includerò nel codice xml. Ho provato in tre modi come questo,Come utilizzare i campi correlati (fields.related) in odoo-8?

1)comment2 = fields.Char(string='Comment',related='res_partner.comment',compute='_compute_com') 
@api.multi 
def _compute_com(self): 
    print self.comment2 

2)comment = fields.Many2one('res.partner','Comment',compute='_compute_com') 
    @api.multi 
    def _compute_com(self): 
    print self.comment 

3)partner_comment = fields.Char(compute='_compute_com') 
@api.multi 
def _compute_com(self): 
    Comment = self.env['res.partner'].browse(partner_id).comment 
    print Comment 
+0

puoi spiegare il tuo problema ???? – user00000341

+0

L'opzione 1 scritta da te è la risposta corretta per la tua domanda. –

+0

No Ho provato che non funziona sto ricevendo errore come keyerror: res_partner – Bhanukiran

risposta

12

Si consiglia di utilizzare un campo relativo, invece:

comment = fields.Char(related='partner_id.comment') 

Se avete bisogno di memorizzare nel vostro account_invoice record anche bisogno di aggiungere il parametro negozio = True Il problema è che, in questo modo non si può semplicemente stamparlo, ma se avete bisogno di vederlo devi metterlo nella tua vista.

Se avete veramente bisogno di stamparlo temporaneamente è necessario fare questo altro modo:

comment = fields.Char(compute='_compute_comment') 

def _compute_comment(self): 
    for record in self: 
     record.comment = partner_id.comment 
     print record.comment 
+0

Hey la tua seconda risposta funziona grazie – Bhanukiran

+0

cool. Ricordati di usare la prima soluzione quando non hai più bisogno di stamparla ... –

1

in odoo8

se bisogno stessi campi oggetto a correlate, è possibile utilizzare correlate = "relativo nome del campo" l'uso immagazzinare = True

comment2 = fields.Char(string='comment',related='comment', store=True) 

LINK

2

campo relativo campi

Ci non è più fields.related.

Invece basta impostare il nome dell'argomento relative al tuo modello:

participant_nick = fields.Char(string='Nick name', 
          related='partner_id.name') 

Il tipo kwarg non è più necessaria.

Impostazione dello store kwarg memorizzerà automaticamente il valore nel database. Con la nuova API il valore del campo correlato verrà aggiornato automaticamente, dolce.

participant_nick = fields.Char(string='Nick name', 
          store=True, 
          related='partner_id.name') 

Note

When updating any related field not all translations of related field are translated if field is stored!!

campi correlati concatenate modifica sarà innescare invalidazione della cache per tutti gli elementi della catena.

0

hanno un problema con il mio campo correlato, ho due classi: nomenclatura e projet_ligne voglio ottenere il valore di 'sous' on 'eta' quindi non c'è il mio codice

class nomenclature(models.Model): 
_name = 'nomenclature' 

name = fields.Char('Nom de la nomenclature',required=True) 
quantite = fields.Integer('Quantité',required=True) 
produit=fields.Many2one('product.product') 
sous= fields.Boolean('sous') 

class projet_ligne(models.Model): 
_name = 'projet.ligne' 
#name = fields.Char('nom du sous essaie',required=True) 
nomenclature=fields.Many2one('nomenclature',required=True) 
responsable=fields.Many2one('res.users',) 
projet = fields.Many2one('projet',required=True) 
date= fields.Date() 
etat=fields.Boolean('Achevé?') 
reference= fields.Char('Réference') 
nature= fields.Char('Nature') 
dateprelevement= fields.Date() 
lieuprelevement= fields.Char('lieu') 
etatvalider= fields.Boolean('Validé') 
eta= fields.Boolean(related='nomenclature.sous') 

doesn t lavoro :/

+0

Questa non è una risposta ... – Jerther