Как использовать связанные поля (fields.связанный) в odoo-8?

Я пытаюсь получить поле комментария (внутренние Примечания клиента)из res_partner в модуль счета-фактуры.Прямо сейчас я просто хочу распечатать его позже, я включу его в xml-код. Я пробовал тремя способами, как это,

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

5 ответов


вместо этого следует использовать связанное поле:

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

Если вам нужно хранить его в вашем account_invoice запись Вам также необходимо добавить параметр store=True Проблема в том, что таким образом вы не можете просто распечатать его, но если вам нужно показать его, вам нужно поместить его в свое представление.

Если вам действительно нужно напечатать его временно, вам нужно сделать это по-другому:

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

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

Соответствующее Поле

полей больше нет.связанные поля.

вместо этого вы просто устанавливаете аргумент name, связанный с вашей моделью:

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

тип kwarg больше не нужен.

установка магазина kwarg автоматически сохранит значение в базе данных. С новым API значение связанного поля будет автоматически обновляться, sweet.

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

Примечание

при обновлении любого связанного поля не все переводы связанного поля переводятся, если поле хранится!!

изменение связанных связанных полей вызовет недействительность кэша для всех элементов цепочки.


на odoo8

Если вам нужны те же поля объекта, что и связанные, вы можете использовать related= "related field name" use store=True

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

ссылке


будьте осторожны, вы должны использовать такое же поле !!

(у меня была проблема с выбором и Char ... поэтому я должен использовать выбор с выбором)


есть проблема с моим связанным полем, у меня есть два класса: номенклатура и projet_ligne я хочу получить значение "sous" на "eta", так что мой код

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')

это не работает :/