<blockquote>
<p>Every <code>ModelForm</code> also has a save() method. This method creates and saves a database object from the data bound to the form. A subclass of <code>ModelForm</code> can accept an existing model <strong>instance</strong> as the keyword argument instance; <strong>if this is supplied, save() will update that instance. If it’s not supplied, save() will create a new instance of the specified model</strong></p>
</blockquote>
<p>因此,您只需将<strong>实例</strong>传递给<code>EditForm</code></p>
<pre><code># Edit Your account
@login_required
def edit_profile(request, user_slug=None):
template_name = 'account/edit_profile.html'
if request.method == "POST":
request_user = request.user.userprofile
user_profile = UserProfile.objects.get(slug=user_slug)
# if instance is supplied, save will update instead of create
form = EditForm(request.POST, request.FILES, instance=user_profile)
print(form.errors) # check if any errors
if form.is_valid():
# form.instance.slug = user_slug
form.save()
return redirect('account:view_profile', form.instance.slug)
return render(request, template_name, {'form': form})
else:
user_profile = UserProfile.objects.get(slug=user_slug)
# prepopulate the form data with model instance
form = EditForm(instance=user_profile)
return render(request, template_name, {'form': form})
</code></pre>
<p>注意:如果您也上传图像,请记住也要传递<code>request.FILES</code></p>