2014-02-19 192 views
0

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

我的模板:

<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代码绝对没有输出,如果条件被忽略。我发现的解决方案之一是这样的:Django Select Option selected issue

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

回答

0

您不应该在模板中手动创建<select>元素。 Django表单将为您做到这一点,并在错误重新显示时保留相关项目的选择。

替换只是所有的HTML:

{{ form.category }} 
+0

丹尼尔·罗斯曼可以在一个房间谈谈吗? –