2011-01-25 112 views
1

自定義的Django窗體域管理員如何基於表單字段的值,自定義表單顯示在Django的管理?例如,我有一個默認值爲「0」的字段。如果該字段已設置爲非零值,我想在表單上顯示額外的「編輯」鏈接,該鏈接將鏈接到單獨的頁面,以允許編輯與相關模型相關的其他字段。我已經找到了如何定製admin的表單模板,但是我找不到如何訪問表單字段的實際值,以便在模板中添加if/else語句。基於價值

我已經試過挖掘源代碼,並且已將我的字段實例跟蹤到django.contrib.admin.AdminField.field->django.forms.BoundField,但顯示BoundField的字段和數據屬性不顯示存儲在默認窗體字段小部件標記中的值。如何在模板中訪問特定字段的數據值,以便我可以執行以下操作?

{% for fieldset in inline_admin_form %} 
    {% for line in fieldset %} 
     {% for field in line %} 
      {{field.field}} {% if field.field.value != 0 %}<a href="/some/path/to/model/{{field.value}}">Edit</a>{% endif %} 
     {% endfor %} 
    {% endfor %} 
{% endfor %} 

回答

1

只是做隨機變量的shell會話打字(IPython的FTW),並發現這一點:

boundfield.data = data 
boundfield.field.initial = initial 

{% for field in form %} 
    {% if field.data != field.field.initial %}Not Initial{% endif %} 
{% endfor %} 

給它一個鏡頭!