2016-06-10 111 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