1

我想根据来自 URL 标签的 URL 请求预先填写一个下拉框。我试图在网站是书籍列表的地方得到它,当你在书页上时,如果你想在那本书上做一些笔记,那么你会点击“做笔记”按钮,它将带您进入便笺表单页面,其中书名顶部的下拉框将根据您刚刚来自的书页的标题预先填写。

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

{% url 'books:take_notes' book.id %}

view.py - 然后对于记笔记页面,我尝试像这样预填充 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,
        }

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

4

2 回答 2

1

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

于 2013-08-17T15:32:37.197 回答
1

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

 form = NoteForm(initial={'book_id':book_id})
于 2013-08-17T15:35:05.380 回答