У меня есть 3 модели, вот интересная часть каждого:Odoo: Значение в one2many doen't изменения api.depends
голосов:
class vote(osv.osv)
_name = 'vote'
_columns = {
name = fields.many2one('res.partner',
'Member of enterprise',
select=True),
type = fields.interger('Type'),
}
history_line:
class history_line(osv.osv)
_name = 'history_line'
_columns = {
fieldsA = fields.integer('First field'),
fieldB = fields.integer('Second field'),
this_id = fields.many2one('res.partner', 'link to res'),
}
res_partner:
class res_partner(osv.osv)
_inherit = 'res.partner'
_columns = {
vote_partner_ids = fields.one2many('vote',
'name',
'Voted peoples',
select=True),
vote_history_ids = fields.one2many('history.line',
'this_id',
compute='compute_type',
string='History of votes'),
}
@api.multi
@api.depends('vote_partner_ids.type')
def compute_type(self):
for record in self:
if self.vote_partner_ids.type:
record.vote_history_ids = [(0, 0, {'self.vote_history_ids.fieldA': self.vote_partner_ids.type + 4,
'self.vote_history_ids.fieldB': self.vote_partner_ids.type - 2})]
Их также значение по умолчанию для новой history_line (fieldA = 1, когда вы ничего не делаете, fieldB = -1, если вы ничего не делаете для примера)
Я не могу переместить функцию вычисления в другом месте, потому что много Здесь вычисляются вещи.
Проблема: когда я изменяю тип голоса, будет создана новая строка истории, но со значениями по умолчанию. Я не могу заставить ценности быть чем-то еще. (даже если я ставлю прямо значение, например 10) Так почему же выбираются значения по умолчанию, даже если я попросил их вычислить, но он все еще понимает, что он должен создать новый кортеж?
Здесь внутренняя петля self не должна использоваться вместо записи. –