基于值自定义管理员中的Django表单域

时间:2011-01-25 16:46:13

标签: python django django-admin django-templates django-forms

如何根据表单字段的值自定义Django管理员中表单的显示?例如,我有一个默认值为“0”的字段。如果该字段已设置为非零值,我想在表单上显示另一个“编辑”链接,该链接将链接到单独的页面,允许编辑与相关模型相关的其他字段。我已经找到了如何自定义管理员的表单模板,但我找不到如何访问表单字段的实际值,以便在模板中添加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 个答案:

答案 0 :(得分:1)

刚刚用随机变量(ipython ftw)输入一个shell会话,发现了这个:

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

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

试一试!