首页 > 解决方案 > Django admin 自定义表单提交强制从下拉列表中选择操作

问题描述

我想将自定义表单添加到 django 管理站点更改列表视图。一旦我添加了一个提交按钮,它就会要求从下拉列表中选择自定义操作。我创建了一个具有唯一 ID 的单独表单。它仍然寻找一个动作被选择。我该如何克服呢?

在此处输入图像描述

这是我的模板代码。

{% extends "admin/change_list.html" %}
{% load staticfiles %}
{% block content %}
<div align="right">
    <form id="generate-form" method="POST">
        {% csrf_token %}
        <select>
            <option value="">-- section name --</option>
            {% for section in sections %}
            <option value="{{ section.short_name }}">{{ section.name }}</option>
            {% endfor %}
        </select>
        <input type="text" name="from_date" class="vTextField" placeholder="from">
        <input type="text" name="to_date" class="vTextField" placeholder="to">&nbsp;
        <input type="submit" value="Generate" class="default" id="gen-schedules"
        style="margin:0; height: 30px; padding-top: 5px;">
    <form>
</div>
{{ block.super }}
{% endblock %}

标签: djangotemplatesdjango-admin

解决方案


假设你复制/粘贴而不更改它,你有这个,因为表单标签没有正确关闭:<form>应该替换为</form>

...
    </form>
</div>
{{ block.super }}
{% endblock %}

因为它没有关闭,所以浏览器认为它与下一个表单相同,即操作表单。

为避免此类问题,我建议尽可能依靠 Django 的表单为您生成正确的 HTML。为了帮助处理复杂的布局,django-crispy-forms是一个非常有用的优秀库。


推荐阅读