【问题标题】:Django admin add custom button in change form depending on a form field valueDjango 管理员根据表单字段值在更改表单中添加自定义按钮
【发布时间】:2013-01-31 08:14:30
【问题描述】:

我有一个覆盖 het Django 更改表单的应用程序。我要更改的是底部的提交按钮。下面是 django 应用中的change_form.html

{% extends "admin/change_form.html" %}
{% block submit_buttons_bottom %} 
    ## add some buttons
{% endblock %}

我要显示/添加的按钮取决于表单名称“状态”中某个字段的值。如何获取模板中某个字段的值... 类似

{% if form.field.status == 'unresolved' %}
    <input type="submit" value="Mark as resolved" class="default" name="_save" />
{% endif %}

更新:

我没有收到任何错误。根本没有显示任何内容。

通过 var 'adminform' 循环将带我进入我需要的字段

{% for fieldset in adminform %}
    {% for line in fieldset %}
        {% for field in line %}
            {% if field.field.name == 'status' %}
                this is status {{ field.field.name }} - {{ field.contents }}
            {% endif %}
        {% endfor %}
    {% endfor %}
{% endfor %}

但我想直接访问它。 类似:

{% if adminform.0.0.field.status == 'unresolved' %}
    <input type="submit" value="Mark as resolved" class="default" name="_save" />
{% endif %}

【问题讨论】:

  • 您的代码有什么问题?你遇到了什么错误?
  • 我没有收到任何错误。根本没有显示任何内容。查看我的更新
  • 好的,我已经更新了答案。

标签: django django-templates django-admin


【解决方案1】:

这应该可行:

{% if adminform.form.status.value == 'unresolved' %}

或者如果该字段是只读的,还有另一种方法:

{% if adminform.form.instance.status == 'unresolved' %}

【讨论】:

    【解决方案2】:

    尝试将您的 if 语句更改为 -

    {% if adminform.status.value == 'unresolved' %}
    

    我猜,但我认为adminform 变量可能只是一种形式。查看this section of the docs 以查看表单字段的属性。

    【讨论】:

    • {{ adminform }}、{{ adminform.status }} 或 {{ adminform.status.value }} 输出什么?
    最近更新 更多