Домен во вложенном поле x2many

Я думал, что это будет проще, но после нескольких часов гугления, проб и ошибок я здесь...

В моем пользовательском модуле у меня есть вкладка (страница блокнота), называемая заметками. На этой вкладке есть простое поле one2many, поэтому я могу добавить несколько заметок для этой записи. У заметок есть текстовое поле и поле тега many2many, поэтому каждая заметка может иметь теги.

Я пытаюсь отобразить красный «значок предупреждения» (для простоты в виде смарт-кнопки), если есть какая-либо заметка с тегом «Предупреждение». Я подумал, что скрою его, если не будет предупреждающего тега, я просто не могу определить домен для моего attrs="{'invisible':[('<field for tags>','in','Warning')]}"

Как лучше всего это сделать? Вот модели для полей x2many:

class sites_notes(models.Model):
    _name = 'sites.notes'
    _order = "write_date DESC"
    tower_id = fields.Many2one('sites.sites', string='Site')
    tag_id = fields.Many2many('sites.notes.tags', 'sites_notes_tags_rel', string="Tags")
    note = fields.Text('Notes')

class sites_notes_tags(models.Model):
    _name = 'sites.notes.tags'
    name = fields.Char('Tag', size=24)
    note_id = fields.Many2many('sites.notes', 'sites_notes_tags_rel', string="Note")

person Sciallo    schedule 10.06.2016    source источник


Ответы (1)


Возможно, не лучший способ, но рабочий способ:

  1. Создайте функцию/вычисляемое поле (например, has_warning) в модели, где определено поле x2many.
  2. Вычислите логическое значение, проверив все примечания для вашего условия.
  3. Вставьте поле функции/вычисления в определения представления (может быть невидимым!).
  4. Покажите кнопку предупреждения с доменом в этом поле, например: attrs="{'invisible':[('has_warning','!=',True)]}"
person CZoellner    schedule 13.06.2016
comment
Я думал об этом и начну экспериментировать с этой идеей, я надеялся, что будет более простой способ... Спасибо. Я дам вам знать, как это работает. - person Sciallo; 14.06.2016
comment
В итоге я создал поле count_warnings и использовал attrs="{'invisible': [('count_warnings','&lt;',1)]}"... Мне нравится это решение, но если у кого-то есть лучший способ, поделитесь :-) - person Sciallo; 14.06.2016