2016-06-10 53 views
0

我想这将是简单,但谷歌搜索和反复试验我在这里的时间后...域嵌套x2many场

在我的自定义模块,我有一个选项卡(笔记本页)所谓的笔记。在此选项卡中是一个简单的one2many字段,因此我可以为此记录添加多个注释。 Notes有一个文本字段和一个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") 

回答

0

也许不是最好的方式,但是一个工作方式:

  1. 上,其中x2many字段被定义模型创建功能/运算字段(例如has_warning。)。
  2. 通过检查条件的所有注释来计算布尔值。
  3. 将函数/计算字段插入到您的视图定义中(可能是不可能的!)。
  4. 显示你的警告按钮,在那场就像一个域名:attrs="{'invisible':[('has_warning','!=',True)]}"
+0

我一直在这样思考,并会开始尝试这个想法,我希望会有一个更直接的方式......谢谢。 我会让你知道它是如何工作的。 – Sciallo

+1

我最终创建了一个字段“count_warnings”,并使用了attrs =“{'invisible':[('count_warnings','<',1)]}”'...我很喜欢这个解决方案,但是如果任何人都有更好的方式,分享:-) – Sciallo

0

您可以在下面这种情况下,使用域domain="[('name','!=','Warning')]"

<field name="tag_id" domain="[('name','!=','Warning')]"> 

它会过滤TAG_ID,即没有名称为“警告”。

希望它可以帮助你的情况。

+0

感谢您的答复,因为你可以在我的问题看,我有一个域作为条件来隐藏或不隐藏按钮,不要过滤一个x2many列表,这个列表显示它们全部,按钮只应该显示是否有包含“警告”标签的注释......这是行不通的。 – Sciallo