2015-09-10 116 views
3

我試圖使用相同的功能在Django如何使用:如果Odoo模板語言

<div class="item {% if condition == True %}active{% endif %}"> 

在Odoo我:

<t t-foreach="list" t-as="l"> 
    <a t-attf-href="/downloads/{{l.id}}" class="list-group-item"><t t-esc="l.name"/></a> 
</t> 

我需要追加級和「主動「如果」c.id = cat_id「

它是如何在Odoo中完成的?

我使用:

<t t-foreach="categories" t-as="c"> 
    <t t-if="c.id == category_id"> 
    <a t-attf-href="/downloads/{{c.id}}" class="list-group-item active"><t t-esc="c.name"/></a> 
    </t> 
    <t t-if="c.id != category_id"> 
    <a t-attf-href="/downloads/{{c.id}}" class="list-group-item"><t t-esc="c.name"/></a> 
    </t> 
</t> 

但尋找一個更Python的方式

回答

5

我不認爲QWeb模板甚至意圖是Python的;)

你可以這樣做如果你想:

<a t-attf-href="/downloads/{{c.id}}" t-attf-class="list-group-item {{ 'active' if c.id == category_id else '' }}"> 
    <t t-esc="c.name"/> 
</a> 
+0

Ludwik Trammer the odoo guru! –

+0

好工作的人!!!! –

+0

有沒有什麼辦法可以在那裏使用elif?我的意思是 - elif在attf ... –

1

嘗試以下,

在小部件中準備一個函數來比較value和設置css風格到該小部件的新屬性。

init: function(parent,options){ 
     //define 1 property to access this in template and set it from calling function 
     this.style = ''; 
     this._super(parent,options); 
    } 
    get_comparison_result : function(cid,category_id){ 
     var style = ""; 
     if (cid != category_id){ 
      //Add style here 
      style = "background-color:white"; 
     } 
     else{ 
      //Add style here 
      style = "background-color:green"; 
     } 
     this.style = style; 
     return true; 
    } 

然後你可以從模板調用這個和分配結果的變量,並使用這個結果。

<t t-if="widget.get_comparison_result(c.id, category_id)"> 
    <t t-set="style" t-value="widget.style" /> 
</t> 

<a t-attf-href="/downloads/{{c.id}}" t-att-style="style"><t t-esc="c.name"/> 
+0

我不認爲內聯樣式是(永遠)要走的路... –

+0

這是一個替代方法來做一些棘手的東西! –