В разделе POST
отсутствует аргумент instance
.
Вместо этого:
form = AccountForm(request.POST, request.FILES) # A form bound to the POST data
Вы должны использовать это:
form = AccountForm(request.POST, request.FILES, instance=f) # A form bound to the POST data
Как только вы добавите это в форму добавления / редактирования, вы сможете добавлять / редактировать одновременно.
Будет добавлено, если instance=None
, и обновлено, если instance
является действительной учетной записью.
def edit_account(request, acc_id=None):
if acc_id:
f = Account.objects.get(pk=acc_id)
else:
f = None
if request.method == 'POST': # If the form has been submitted...
form = AccountForm(request.POST, request.FILES, instance=f) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form.save()
return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
form = AccountForm(instance=f) # An unbound form
return render_to_response('account_form.html', {
'form': form,
})