0
當我使用URL中的id參數編輯記錄,並且使用request.GET中的「elif'id」時,它不更新記錄,但它創建一個新的行Django表單插入記錄而不是更新
@login_required
def login_save_page(request):
if request.method == 'POST':
form = LoginSaveForm(request.POST)
if form.is_valid():
# Create or get login.
login1 = _login_save(request, form)
return HttpResponseRedirect(
'/user/%s/' % request.user.username
)
elif 'id' in request.GET:
id2 = request.GET['id']
name=''
url=''
Login_username =''
notes= ''
password=''
try:
login1 = login.objects.get(
id = id2,
username=request.user
)
name = login1.name
url = login1.loginUrl
Login_username = login1.login_username
notes = login1.notes
password = login1.password
except (login.DoesNotExist):
pass
form = LoginSaveForm({
'id': id2,
'name': name,
'url': url,
'Login_username': Login_username,
'notes': notes,
'password': password
})
else:
form = LoginSaveForm()
variables = RequestContext(request, {
'form': form
})
return render_to_response('login_save_page.html', variables)
如果我這樣做,當我在url上使用id參數我不會得到該記錄的當前字段值,並且還會生成一條新記錄。這是我改變,如果我誤解了你http://pastebin.com/fZ2ZL7Kp – Dimitris
啊,這個難題有兩個部分。一個是get()塊需要在GET中填充記錄,並且在POST期間它還需要拉動記錄並執行不同的save()操作。我可能只是建議你使用'ModelForm',它可以通過傳遞一個實例來修改(或不是)來區分更新和插入。 –