Python Django根据url请求预填充表单下拉框

Python Django根据url请求预填充表单下拉框,python,django,Python,Django,我想根据URL标签的URL请求预先填充一个下拉框。我想在网站上找到一个图书列表,当你在一个图书页面上,如果你想在那本书上做笔记,你可以点击“做笔记”按钮,它会把你带到一个笔记表单页面,在页面顶部的下拉框中,书名会从你刚读到的书页的标题中预先填充 我在“book/detail.hmtl”页面上的url如下所示: {% url 'books:take_notes' book.id %} def take_notes(request, book_id): mybook = Book.object

我想根据URL标签的URL请求预先填充一个下拉框。我想在网站上找到一个图书列表,当你在一个图书页面上,如果你想在那本书上做笔记,你可以点击“做笔记”按钮,它会把你带到一个笔记表单页面,在页面顶部的下拉框中,书名会从你刚读到的书页的标题中预先填充

我在“book/detail.hmtl”页面上的url如下所示:

{% url 'books:take_notes' book.id %}
def take_notes(request, book_id):
  mybook = Book.objects.get(pk=boo_id)
  form = NoteForm(initial={'book':mybook.title})
view.py-然后对于“记录笔记”页面,我尝试像这样预先填充NoteForm():

{% url 'books:take_notes' book.id %}
def take_notes(request, book_id):
  mybook = Book.objects.get(pk=boo_id)
  form = NoteForm(initial={'book':mybook.title})
url.py-

url(r'^take_notes/(?P<book_id>\d+)/$', views=take_notes, name='take_notes'),

当我使用首字母作为“title”时,它将预填充,但不会用于“book”,因为它是一个下拉框。有什么想法吗?谢谢。

您试图通过传递标题来预填充选择框,标题大概就是控件中显示的内容。但是您应该传递基础值,对于ForeignKey,它是相关对象的id。

尝试在视图中设置
book\u id
而不是
book

 form = NoteForm(initial={'book_id':book_id})

你和丹尼尔·罗斯曼的建议是正确的。这是一个ForeignKey字段,所以我必须通过id而不是字符串来查找它。我使用和使用的语法是:form=NoteForm(initial={'book':book_id}),感谢您和Rohan的帮助。我在上面发表了评论。它正在工作!