我正在try 使用基于类的UpdateView更新Django用户模型,该视图自动呈现当前用户,但收到需要PK或slug的错误.表单工作并使用正确的当前用户上下文呈现,但在我try 提交更改时抛出错误.下面是我使用的视图:

class UserUpdateView(UpdateView):
    form_class = UserForm
    model = User
    template_name = 'members/user_update.html'

    def get(self, request, **kwargs):
        self.object = User.objects.get(username=self.request.user)
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        context = self.get_context_data(object=self.object, form=form)
        return self.render_to_response(context)

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.user = self.request.user
        self.object.save()
        return HttpResponseRedirect(self.get_success_url())

推荐答案

我需要覆盖更新视图上的get_object()方法,而不需要覆盖FORM_VALID.自定义get_object()方法为:

    def get_object(self, queryset=None):
        return self.request.user

Django相关问答推荐

Django中的设计用户类

Django动态页面.为什么我的代码不工作?

Htmx如何从事件中访问数据?

我如何获得已循环的每个项目的名称?

Django ORM:子查询上的文本聚合器

模板过滤器修剪任何前导leading或尾随trailing空格

django-rest-framework 如何使模型序列化器字段成为必需

如何缓存 Django Rest Framework API 调用?

Django App 配置不当 - 应用程序模块有多个文件系统位置

magic有什么问题?

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

jinja2模板引擎中的这个-是做什么的?

Django 模板:通过扩展模板覆盖包含的子模板块

Django 删除未使用的媒体文件

Django UrlResolver,在运行时添加 url 进行测试

带有消息判断的 Django/Python assertRaises

__init__() 得到了一个意外的关键字参数user

django 管理列表中的外键显示

如何将类、id、占位符属性添加到 django 模型表单中的字段

Django: Force强制 Select 相关?