【发布时间】:2015-05-20 18:33:40
【问题描述】:
我之前问过this 的问题,但现在我无法弄清楚如何为多表单视图的一种形式使用下拉菜单(甚至更好的是自动填充字段)。
使用的模型是 Book、BookDetails 和 Genre。 BookDetails 是一个到 Genre(和其他类似表)的链接表,因此我可以拥有一个静态的流派列表等,其中包含 BookDetails 的唯一 ID 和外键。
现在我有这个:
#views.py
def BookFormView(request):
genre = Genre.objects.all()
if request.method == "POST":
book_form = BookForm(request.POST, prefix='book')
bookdetails_form = BookDetailsForm(request.POST, prefix='bookdetails')
selected_genre = get_object_or_404(Genre, pk=request.POST.get('genre_id'))
genre.id = selected_genre
genre.save()
if book_form.is_valid() and bookdetails_form.is_valid():
book_form.save()
bookdetails_form.save()
return HttpResponseRedirect("/books/")
else:
book_form = bookForm(prefix='book')
bookdetails_form = BookDetailsForm(prefix='bookdetails)
return render(request, 'books/createbook.html',
{'book_form' : book_form,
'bookdetails_form': bookdetails_form,
'genre':genre,})
#createbook.html
<select name="genre", id="genre" form="bookform">
{% for entry in genre %}
<option value="{{ entry.id }}">
{{ entry.name }}
</option>
{% endfor %}
</select>
表单在页面上正确显示,下拉菜单包含来自数据库的选项。但是,当我点击提交以将信息存储到数据库时,我收到一条错误消息:No Genre matches the given query SO 上有关此错误的其他帖子似乎并非来自同一上下文。我认为这可能与选择名称但存储 id(用于流派)有关,否则我不知所措。
【问题讨论】:
-
@Wtower 这可能是你的胡同