在django vanilla CreateView上设置当前用户

马特乌斯·姆罗泽夫斯基

我想用当前登录的用户更新我的模型。我正在使用django-vanilla-views。为了存储新记录,我尝试使用CreateView。我不想在表单上显示用户,只需自动更新即可。

这是我的模型:

class Measurement(models.Model):
    date = models.DateField()
    user = models.ForeignKey(User)

这是我的看法:

class CreateMeasurement(CreateView):
    model = Measurement
    fields = ['date']
    success_url = reverse_lazy('list_measurements')

    def get_form(self, data=None, files=None, **kwargs):
        kwargs['user'] = self.request.user
        return super(CreateMeasurement, self).get_form(data=data, files=files, **kwargs)

不幸的是,访问视图时出现以下异常:

TypeError: __init__() got an unexpected keyword argument 'user'

我还尝试为我的模型创建一个ModelForm,但是却出现了完全相同的错误。有什么想法我可能做错了吗?

阿拉斯代尔

您不需要将用户传递给表单,因此不必重写get_form方法。您已经field通过fields在视图中进行设置将用户从模型表单中排除,因此您也不需要自定义模型表单。

form_valid保存表单时,应该足以覆盖该方法并设置用户。

from django.http import HttpResponseRedirect

class CreateMeasurement(CreateView):
    model = Measurement
    fields = ['date']
    success_url = reverse_lazy('list_measurements')

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django CreateView:在验证之前设置用户

在Django中,如何让CreateView仅显示当前用户创建的对象?

Vanilla Django Query显示“扁平化”的用户/组(ManyToMany)列表

如何使用 vanilla JavaScript 在 Django 而不是 Jquery 上添加 ajax 请求

如何使用CreateView在Django表单上设置初始值

根据当前登录用户在 Django CreateView 中显示不同的默认值?

如何获取在 URL 上设置的外键并在 django CreateView 上使用它

Django管理模型字段设置为当前用户

在 Vanilla JS 和 Django 中保护 API 密钥的最佳方法

使用 vanilla JS 向 Django 视图发送 AJAX 请求

Django - 检索当前用户

Django:如何在CreateView中获取当前用户并基于此过滤一个ForeignKey选择字段

在Django中使用inlineformset_factory时将模型用户设置为当前用户

如何在Django Rest Framework中将当前用户设置为用户字段?

在Django中创建对象时,将当前登录的用户设置为模型中的用户

如何在 Django 中将默认用户设置为当前用户对象?

Django EventLog:传递当前用户

如何仅以Vanilla Javascript为目标当前悬停的元素

Django createView将当前的user_id传递给Modelform

Vanilla JS,在滚动位置上的类上添加和删除

将宽度设置为附加的子图像-VANILLA JavaScript

在Vanilla JS上拖放鼠标移动脚本

Vanilla JS悬停在SVG路径上以显示DIV?

Vanilla JS中的对象数组上的多级组

使用 vanilla JS 在滾動上更改徽標

minikube 集群上的 Vanilla JS ERR_NAME_NOT_RESOLVED

Django REST Framework(DRF):将当前用户ID设置为字段值

为当前登录用户设置外键 | Django Rest 框架视图集

如何将模型字段的值设置为当前登录的用户?Django的