Django 从表单中保存更新的数据库值



我正在尝试允许用户编辑他们的个人资料。在 post 方法中,我想将新数据保存在同一行中的旧数据上。

# Post method of class view in views.py
def post(self, request, username):
    try:
        user = User.objects.get(username=username)
    except User.DoesNotExist:
        raise Http404('The User "' + username + '" could not be found.')
    if (not request.user.is_authenticated):
        return HttpResponseForbidden()
    elif (user.id is not request.user.id):
        return HttpResponseForbidden()
    form = self.form_class(request.POST)
    if (form.is_valid()):
        # creates a new user object, does not save to the database yet
        profile = form.save(commit=False)
        # clean (normalized) data
        # ...
        profile.save()
        if (user.is_active):
            return redirect('/profile/' + user.username)
    return render(request, self.template_name, {'form': form, 'error_message': 'Oops, something went wrong'})

我相信这段代码是在调用 post 方法时创建一个新的数据库行。如何让它更新外观干净的解决方案中的现有行?

如果你

使用Django的UpdateView那么它会通过保存ModelForm来处理很多细节......包括保存更新,在成功时重定向用户,以及在出现问题时重新显示带有错误显示的表单。

最新更新