我有一个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
我只是不知道如何将模板中的变量转换为整数。谢谢你的帮助。
答案 0 :(得分:0)
您不应该在模板中手动创建<select>
元素。 Django表单将为您执行此操作,并将在重新显示错误时保持选择相关项目。
用以下内容替换所有HTML:
{{ form.category }}