Django根据网址请求预先填写表格下拉框

时间:2013-08-17 15:21:35

标签: python django

我想根据来自网址标记的网址请求预先填充一个下拉框。我试图在网站列表中找到它,当你在书页上,如果你想在那本书上做一些笔记,那么你会点击“记笔记”按钮,然后会将您带到一个备注表单页面,其中顶部的下拉框将从您刚刚出版的书籍页面的标题中预先填写。

“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,
        }

当我使用“标题”的首字母时,它会预先填充,但它不会“预订”,因为它是一个下拉框。有任何想法吗?感谢。

2 个答案:

答案 0 :(得分:1)

您尝试通过传递标题来预填充选择框,这可能是控件中显示的内容。但是你应该传递底层值,在ForeignKey的情况下,它是相关对象的id。

答案 1 :(得分:1)

尝试在视图中设置book_id而不是book

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