2016-05-31 138 views
0

我知道這不是建議的,因爲它應該在視圖中完成,但我有一個場景,我需要在模板內進行篩選。Django篩選模板中的查詢集

我有sitefiles_set,我在同一個模板中請求2或3次,並使用if語句在正確的位置顯示正確的文件類型。 (所有顯示的東西)

所以在我的特定文件類型的模板(張)以下,香港專業教育學院了拆分數據爲表列,使其在頁面更具可讀性。然而,模板forloop計數器計算所有文件,而不僅僅是if中的文件,所以在實際顯示中,我有5個鏈接顯示在左側欄中,然後是右側8個鏈接。

,所以我需要過濾掉那些不是內閣的照片,而不是使用if。但我需要的模型相同,所以我可以在另一節中再次使用它來顯示另一種類型。

感謝

<b>Cabinet Photos:</b><br/> 
       <table> 
        <tr> 
         <td> 
          <ul class="standard-list"> 
           {% for file in Site.sitefiles_set.all %} 
            {% if file.file_type.type == 'Cabinet Photo' %} 
            <li> 
             <a href="{{ MEDIA_URL }}{{ file.site_image }}" data-lightbox="sitephotos" data-title="{{ file.file_name }}"> 
              {{ file.file_name }} 
             </a> 
            </li> 
             {% if forloop.counter|divisibleby:"8" and file.file_type.type == 'Cabinet Photo' %} 
               </ul> 
              </td> 
              <td> 
               <ul class="standard-list"> 
             {% endif %} 
             {% if forloop.counter|divisibleby:"16" and file.file_type.type == 'Cabinet Photo' %} 
               </ul> 
              </td> 
             </tr> 
             <tr> 
              <td> 
               <ul class="standard-list"> 
             {% endif %} 
            {% endif %}          
           {% endfor %} 
          </ul> 
         </td> 
        </tr> 
       </table> 
+0

你應該使用模板標籤,然後 –

+0

@MosesKoledoye我如何做到這一點? – AlexW

+0

使用帶有|的模板標籤過濾器 –

回答

0

我做到了與此

from django import template 
from networks.models import SiteFiles 

register = template.Library() 

@register.assignment_tag 
def get_files_by_type(SiteFiles, type): 
    return SiteFiles.filter(file_type__type=type)