在Django中提交表单后保留选项

时间:2014-02-19 15:14:40

标签: python django django-forms django-templates

我有一个ModelForm用于将图书保存到数据库中。我的模板中有一个下拉菜单,如果表单中有任何错误,我想保留用户选项。我找到了几个解决方案,但它们似乎没有起作用。

我的模板:

<select name="category" class="form-control" id="category">
    {% for category in library_categories %}
        <option value="{{ category.id }}" {% if category.id == form.category.value %} selected{% endif %}>{{ category.title }}</option>
    {% endfor %}
</select>

views.py:

def add_new(request):
    library_categories = LibraryCategory.objects.all()

    if request.method == "POST":
        form = AddNewBookForm(request.POST)
            if form.is_valid():
                form.save()
                message.success(request, _("Your book has sucessfully been added to the library."))
    else:
        form = AddNewBookForm()

    return render(request, "add_new.html", {
        "library_categories" : library_categories,
        "form" : form
    })

HTML代码中绝对没有输出,if条件被忽略。我找到的解决方案之一是:Django Select Option selected issue

我只是不知道如何将模板中的变量转换为整数。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您不应该在模板中手动创建<select>元素。 Django表单将为您执行此操作,并将在重新显示错误时保持选择相关项目。

用以下内容替换所有HTML:

{{ form.category }}