我想根据来自网址标记的网址请求预先填充一个下拉框。我试图在网站列表中找到它,当你在书页上,如果你想在那本书上做一些笔记,那么你会点击“记笔记”按钮,然后会将您带到一个备注表单页面,其中顶部的下拉框将从您刚刚出版的书籍页面的标题中预先填写。
“book / detail.hmtl”页面上的我的网址如下所示:
{% url 'books:take_notes' book.id %}
view.py - 然后对于take notes页面,我试图像这样预填充NoteForm():
def take_notes(request, book_id):
mybook = Book.objects.get(pk=boo_id)
form = NoteForm(initial={'book':mybook.title})
urls.py -
url(r'^take_notes/(?P<book_id>\d+)/$', views=take_notes, name='take_notes'),
NoteForm()有3个字段
class NoteForm(forms.ModelForm):
class Meta:
model = Note
fields = ('book', 'title', 'note',)
widgets = {
'note': forms.Textarea,
}
当我使用“标题”的首字母时,它会预先填充,但它不会“预订”,因为它是一个下拉框。有任何想法吗?感谢。
答案 0 :(得分:1)
您尝试通过传递标题来预填充选择框,这可能是控件中显示的内容。但是你应该传递底层值,在ForeignKey的情况下,它是相关对象的id。
答案 1 :(得分:1)
尝试在视图中设置book_id
而不是book
form = NoteForm(initial={'book_id':book_id})