Я стараюсь понять, как отправлять данные из двух форм django в две отдельные таблицы базы данных из того же вида. Мне нужна только одна кнопка отправки. В то время как вопрос this поставил меня ближе к решению, я получаю ошибки и данные не записываются в базу данных. Я думаю, что этот код фактически проверяет две формы друг против друга, а не представляет обе формы за один раз. Есть идеи?2 формы, 1 вид, 2 таблицы SQL в Django
Вот что я пробовал:
Для одна формы -> одна таблицы. Это работает, так что это начало.
# views.py
def BookFormView(request):
if request.method == 'POST':
form = BookForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect("/books/")
else:
form = BookForm()
return render(request, 'books/createbooks.html',
{'form' : form})
Однако, когда я добавляю эту форму от forms.py, чтобы получить последующий views.py я local variable 'book_form' referenced before assignment
. Это, как правило, простая проблема с глобальной переменной vs-local для исправления, но я не знаю, что это значит в этом случае.
def BookFormView(request):
if request.method == 'POST':
if 'book' in request.POST:
book_form = BookForm(request.POST, prefix='book')
if book_form.is_valid():
book_form.save()
return HttpResponseRedirect("/books/")
bookdetailsform = BookDetailsForm(prefix='bookdetails')
elif 'bookdetails' in request.POST:
bookdetailsform = BookDetailsForm(request.POST, prefix='bookdetails')
if bookdetailsform.is_valid():
bookdetailsform.save()
return HttpResponseRedirect("/books/")
book_form = BookForm(prefix='book')
else:
book_form = BookForm(prefix='book')
bookdetailsform = BookDetailsForm(prefix='bookdetails')
return render(request, 'books/createbook.html',
{'book_form' : book_form,
'bookdetailsform': bookdetailsform})
Почему у вас есть два отдельных сослагательного наклонения при размещении ('' book' и bookdetail'), поскольку требуется только один логический путь, то есть, чтобы сохранить обе формы? – Wtower
Интересно. Честный ответ заключается в том, что я не знаю; Я пытался использовать другие ответы SO, чтобы собрать что-то, что сработает. Я не понимаю, как использовать только «если». Смотрите, что я имею в виду? – Nancy