我在努力理解如何從兩個django表單提交數據到相同視圖的兩個單獨的數據庫表中。我只想要一個提交按鈕。雖然this問題讓我更接近解決方案,但我遇到了錯誤,數據沒有寫入數據庫。我認爲這段代碼實際上檢查了兩個表單,而不是一次提交兩個表單。有任何想法嗎?Django中的2種形式,1種視圖,2種SQL表格
以下是我所嘗試的:
對於一種形式 - >一張表。這工作,所以這是一個開始。
# 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局部變量問題,但我不知道這意味着什麼。
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})
爲什麼你有兩個獨立的IFS發佈('book'和'bookdetail'),因爲你只需要一個邏輯路徑時,即節省兩種形式? – Wtower
有趣。誠實的答案是我不知道;我正在嘗試使用其他SO答案來拼湊一些可行的東西。我不明白的是如何使用一個「如果」。明白了嗎? – Nancy