2011-04-02 109 views
0

我遇到以下問題。我正在嘗試創建一個類似二維數組的表單,您可以在多個對象上輸入多個特徵的值。這導致在表格中顯示單個對象的表單的窗體集,其中各個表單水平顯示。django將表格中的元素與列表中的元素相結合

我的模板看起來像這樣的時刻:`

<table id="formset" class="form"> 
{% for form in formset.forms %} 

    {% if forloop.first %} 
     <thead><tr> 
     <th></ th> 
     {% for field in form.visible_fields %} 
      <th>{{ field.label|capfirst }}</th> 
      {% endfor %} 
     </tr></thead> 
    {% endif %} 
    <tr class="{% cycle row1,row2 %}"> 

    <td> {{ ?? }} </ td> 

    {% for field in form.visible_fields %} 
     <td> 
     {# Include the hidden fields in the form #} 
     {% if forloop.first %} 
      {% for hidden in form.hidden_fields %} 
       {{ hidden.name }} 
      {% endfor %} 
     {% endif %} 
     {{ field.errors.as_ul }} 
     {{ field }} 
     </td> 
    {% endfor %} 
    </tr> 
{% endfor %} 

`

這是從網上取BTW代碼。現在我想要做的是以某種方式在表格前面放置一列,只是一些文字說明對象的名稱,但我似乎無法做到。

我試圖從列表中添加它們,但問題是無法從列表中訪問正確的元素。循環訪問列表會導致相同的問題。

我也嘗試添加一個隱藏字段的形式,設置在認爲字段的值,然後嘗試使用類似 form.my_field.value恢復,但我似乎無法真正從現場獲取的價值。我設法得到了該領域的名稱,但價值無法實現。

我可以想象這樣做使用一些JavaScript,但這是真的最後的手段。在我看來,像這樣基本的東西必須有一個很好的服務器端解決方案。

有什麼想法?

回答

0

如果您使用的是Django 1.3,則可以渲染raw value of a form field。假設你要呈現的字段的值稱爲name

{{ form.name.value }} 
+0

謝謝,我還在1.2.3,這也許就是爲什麼它不是加工。乾杯。 – 0x0 2011-04-02 21:41:58

0

我想有可能是饑荒早期預警系統的解決方案,一個會利用現有的字段屬性像namedescription - 那麼數據將同場本身bindend 。

您可以將自定義屬性添加到表單字段並在代碼中引用它們。

或使用自定義模板標籤,它會返回一個文本時,字段名稱將作爲參數傳遞:

NAMES = { 
    'field1': u'my description1', 
    'field2': u'smthg else' 
} 

@register.simple_tag 
def get_text(name): 
    return NAMES.get(name, u'--no description--')