mik*_*kan 3 django django-models django-forms django-views
除了 form_valid() 方法之外,我还可以将用户设置为创建的其他有效方法。
视图.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)
Run Code Online (Sandbox Code Playgroud)
你应该使用self.request.user它本身。此外,您不应该保存将由instance调用处理的super().form_valid(form), 因此:
class CreatEEView(LoginRequiredMixin, CreateView):
form_class = …
template_name = …
success_url = …
def form_valid(self, form):
form.instance.created_by = self.request.user
return super().form_valid(form)Run Code Online (Sandbox Code Playgroud)
您可以将其包装在 mixin 中,例如:
class SetUserMixin(LoginRequiredMixin):
user_field = 'created_by'
def form_valid(self, form):
setattr(form.instance, self.user_field, self.request.user)
return super().form_valid(form)Run Code Online (Sandbox Code Playgroud)
然后使用SetUserMixin:
class CreatEEView(SetUserMixin, CreateView):
form_class = …
template_name = …
success_url = …Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |