Как использовать связанные поля (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')
это не работает :/