gpt4 book ai didi

django - 为 django CreateView 将登录用户设置为 created_by

转载 作者:行者123 更新时间:2023-12-05 03:25:21 29 4
gpt4 key购买 nike

除了 form_valid() 方法之外,我可以将用户设置为创建者的其他有效方法是什么。

views.py

class CreatEEView(LoginRequiredMixin, CreateView,):
form_class = ''
template_name = ''
success_url = ''

def form_valid(self, form):
instance = form.instance
instance.created_by = Model.objects.get(user=self.request.user)
instance.save()
return super().form_valid(form)

最佳答案

您应该使用 self.request.user 本身。此外,您应该保存实例,它将由super().form_valid(form) 调用处理,因此:

class CreatEEView(LoginRequiredMixin, CreateView):
form_class = …
template_name = …
success_url = …

def form_valid(self, form):
form<b>.instance.created_by = self.request.user</b>
return super().form_valid(form)

你可以把它包装在一个 mixin 中,例如:

class SetUserMixin(LoginRequiredMixin):
user_field = 'created_by'

def form_valid(self, form):
<strong>setattr(</strong>form.instance, <strong>self.user_field, self.request.user)</strong>
return super().form_valid(form)

然后使用 SetUserMixin :

class CreatEEView(<strong>SetUserMixin</strong>, CreateView):
form_class = …
template_name = …
success_url = …

关于django - 为 django CreateView 将登录用户设置为 created_by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72033344/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com