2013-08-17 2 views
1

Я хотел бы предварительно заполнить выпадающее поле на основе URL-запроса из тега URL. Я пытаюсь получить его там, где сайт - это список книг, а когда вы находитесь на странице книги, если вы хотите сделать несколько заметок в этой книге, тогда вы нажмете кнопку «Заметить», и она вы перейдете на страницу формы для заметок, где выпадающее поле вверху для имени книги будет предварительно заполнено из названия страницы книги, с которой вы только что пришли.Django предварительно заполнить раскрывающийся список формы на основе запроса url

Мой URL на "/ detail.hmtl книги" страница выглядит следующим образом:

{% 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, 
     } 

Когда я использую начальное значение для «title», он будет препопыляться, но это не будет для «книги», потому что это раскрывающееся окно. Есть идеи? Благодарю.

ответ

1

установки Try book_id вместо book в представлении, как

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

Ваши советы и советы Даниэля Роземана были на месте. Это поле ForeignKey, поэтому мне пришлось искать его по id, а не по строке. Синтаксис, который я использовал и работал: form = NoteForm (initial = {'book': book_id}) –

1

Вы пытаетесь предварительно заполнить поле выбора, передав заголовок, который, по-видимому, отображается в элементе управления. Но вы должны передать базовое значение, которое в случае ForeignKey является идентификатором связанного объекта.

+0

Спасибо вам и помощь Роана. Я добавил комментарий выше. Он работает сейчас! –

Смежные вопросы