我是Django和Python編程新手,現在我正在努力工作:(!! !! 我使用Django Model創建了一個更新/編輯表單表單,但它只是不預先填充表單字段並同時發佈到數據庫。如何預填充一個Django更新表單並將其寫回數據庫
我認爲問題在於:「form = AdvertForm(request.POST或None,request.FILES或None ,例如=形式)」
沒有‘request.POST或無,request.FILES或無’,它預填充字段,但不更新數據庫...
這是我的views.py:
def update_advert(request, id):
if not request.user.is_authenticated():
return render(request, 'forum/login.html')
else:
form = get_object_or_404(Advert, pk=id)
if request.method == 'POST':
form = AdvertForm(request.POST or None, request.FILES or None, instance=form)
if form.is_valid():
form = form.save(commit=False)
form.user = request.user
form.save()
return redirect('forum:user_account')
else:
form = AdvertForm(instance=form)
context = {'form': form}
return render(request, 'forum/update_advert.html', context)
在它看起來像這樣的時刻,當我嘗試打開更新形式:
opening the form --> not prepopulated :(
謝謝。這真的幫助我更好地理解我的代碼! 但它仍然不會顯示預填充的字段**「request.POST或None,request.FILES或None」** ... 當我剛剛擁有這樣的:**「form = AdvertForm(instance = advert_obj)「**它會顯示我預先填充的字段,但不會將其寫回數據庫... – 2cool4school
您能解釋」show「是什麼意思嗎?代碼,'form = AdvertForm(request.POST or None,request.FILES or None,instance = advert_obj)'當你發佈POST請求時運行,應該更新當前的'advert_obj'。它不會再顯示這些字段,因爲您正在重定向到'forum:user_account'。 –
'else'子句(當您發出'GET'請求時),會將數據預填充到表單域中,如您所述。這工作正常。但是這個部分根本不應該保存到數據庫中,因爲我們只是檢索數據。 'POST'請求負責保存(在你的情況下,更新當前的'advert_obj') –