web-dev-qa-db-fra.com

Comment utiliser les champs liés (liés à) dans odoo-8?

J'essaie de récupérer le champ de commentaire (notes internes du client) de res_partner au module de facturation du compte. À l'heure actuelle, je veux juste l'imprimer plus tard, je l'inclure dans le code xml. J'ai essayé de trois façons comme ça,

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
6
Bhanukiran

Vous devez utiliser un champ lié à la place:

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

Si vous devez le stocker dans votre account_invoice record, vous devez également ajouter le paramètre store = True Le problème est que vous ne pouvez pas simplement l’imprimer mais montrez-le, vous devez le mettre à votre vue.

Si vous avez vraiment besoin de l’imprimer temporairement, vous devez le faire autrement:

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

def _compute_comment(self):
    for record in self:
        record.comment = partner_id.comment
        print record.comment
15
Alessandro Ruffolo

Domaine connexe

Il n'y a plus de champs associés.

Au lieu de cela, vous venez de définir l'argument de nom associé à votre modèle:

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

Le type kwarg n'est plus nécessaire.

Définition du magasin kwarg stockera automatiquement la valeur dans la base de données. Avec la nouvelle API, la valeur du champ associé sera automatiquement mise à jour, gentil.

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

Remarque

Lors de la mise à jour d'un champ associé, toutes les traductions du champ associé Ne sont pas traduites si le champ est enregistré !!

La modification des champs liés à une chaîne entraînera l'invalidation du cache pour tous les éléments de la chaîne.

2
Jainik Patel

dans odoo8

si vous avez besoin des mêmes champs d'objet liés, vous pouvez utiliser related = "nom du champ lié" use store = True

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

LIEN

1
Prashant

Attention, vous devez utiliser le même type de champ !!

(J'ai eu le problème avec Selection et Char ... je dois donc utiliser Selection avec Selection)

0
jteks