2011-01-25 9 views
1

フォームフィールドの値に基づいてDjangoの管理画面でフォームの表示をカスタマイズするにはどうすればよいですか?たとえば、デフォルト値が「0」のフィールドがあります。フィールドがゼロ以外の値に設定されている場合は、フォームに追加の「編集」リンクを表示して、別のページにリンクして、関連するモデルに関連する他のフィールドを編集できるようにします。私はadminのフォームテンプレートをカスタマイズする方法を見つけましたが、テンプレートにif/elseステートメントを追加するために、フォームフィールドの実際の値にアクセスする方法を見つけることができません。値に基づいて管理者のDjangoフォームフィールドをカスタマイズする

ソースコードを掘り下げようとしましたが、フィールドインスタンスを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

ジャスト確率変数(FTW ipython)でシェルセッションタイピングを行なったし、これを見つけた:

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

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

はそれに打撃を与えます!

関連する問題