2017-07-22 52 views
0

我在網頁上顯示使用Django的mysql數據庫。我從views.py將數據庫渲染爲obj,並在index.html中使用它。我想知道是否有可能獲得此對象的索引obj?即在相同的循環迭代中,我想要下一行的值,例如在第10行的迭代中,{{ b.col2 }}我得到第2行的col2值,如何在同一循環迭代中獲得第11行的b.col2值並將其存儲在用於比較的臨時變量。有沒有一種方法可以獲得對象的索引?如何獲取使用Django在HTML中呈現的對象的索引

<script> 
      var i = 1; </script> 
      {% for b in obj %} 

     <tr> 
      <td>{{ b.col1 }}</td> 
      <td><span class="wrapped"><span>{{ b.col2 }}</span></span> </td> 
      <td id='myTable'></td>   
      <td id='myTable'></td> 
      <td>{{ b.col5 }}</td> 
      <td>{{ b.col6 }}</td> 
      <td>{{ b.col7 }}</td> 
     </tr> 



{% endfor %} 
</table> 

UPDATE:

views.py:

def display(request): 

    return render_to_response('index.html', {'obj': my_model.objects.order_by('col2')}) 
+0

你能分享你的views.py嗎? – mattjegan

+1

@mattjegan共享 – akrama81

回答

1

可以使用forloopcounterdocs),以幫助你知道你的指數,隨着obj.index來幫助你下一個索引的值。儘管這並不推薦,但Django Template是專門爲處理簡單性而設計的,而建議您在python中完成其餘部分。

同時閱讀關於切片,可用於列表(docs)。

編輯爲完整的答案:

  1. 在你的應用程序目錄下創建一個名爲templatetags
  2. templatetags文件夾中創建一個名爲__init__.py
  3. templatetags文件,創建一個名爲custom_tags.py
  4. 打開另外一個文件custom_tags.py並添加如下代碼:

from django import template 
register = template.Library() 
@register.filter 
def next_object(value, arg): 
    try: 
     return value[int(arg)+1].col2 
    except: 
     return None 
  • 在模板中添加以下代碼:

  • {% load custom_tags %} 
    {% for b in obj %} 
        {% ifequal forloop.counter0 10 %} <!–– We are at index 10 --> 
         {% with obj|next_object:forloop.counter0 as next_object %} 
          {{ next_object }} <!–– Returns value of col2 from index 11 --> 
         {% endwith %} 
        {% endifequal %} 
    {% endfor %} 
    

    希望它能幫助,

    +0

    好吧{{forloop.counter}},我得到每一行的索引,但是如何獲得迭代中下一行的單元格值?類似於var temp = {{(b + 1).col2}} ??? – akrama81

    0

    當您在Django中使用模板化循環時,會自動爲您設置一些變量。其中一個變量是forloop.counter,它將在您的循環中進行1索引。也就是說,它的第一個值是1,然後在循環的每次迭代中,它將增加1.您可以像這樣使用它:

    {% for b in obj %} 
        {{ forloop.counter }} <!-- your logic here --> 
    {% endfor %} 
    
    +0

    好吧{{forloop.counter}},我得到每一行的索引,但是如何獲得迭代中下一行的單元格值?類似於var temp = {{(b + 1).col2}} ??? – akrama81

    相關問題