Django 如何在ModelFormMixin post()方法中获取当前用户?
如何在LIstview和ModelFormMixin的以下实现中获取当前登录的用户:Django 如何在ModelFormMixin post()方法中获取当前用户?,django,django-views,Django,Django Views,如何在LIstview和ModelFormMixin的以下实现中获取当前登录的用户: class ListMessages(ListView, ModelFormMixin): model = Message template_name = 'accounts/list_messages.html' context_object_name = 'messages' form_class = MessageHiddenUserForm #success_url = reverse_lazy('ac
class ListMessages(ListView, ModelFormMixin):
model = Message
template_name = 'accounts/list_messages.html'
context_object_name = 'messages'
form_class = MessageHiddenUserForm
#success_url = reverse_lazy('accounts:list_messages', kwargs={'uname': })
def post(self, request, *args, **kwargs):
self.object = None
self.form = self.get_form(self.form_class)
if self.form.is_valid():
self.form.user_to = self.kwargs['uname']
self.form.user_from = request.user #this doesn't work
self.object = self.form.save()
return self.get(request, *args, **kwargs)
问题不在于从何处获取用户,而在于将用户分配到何处。在表单上设置任意属性根本不起任何作用;您需要将其分配给
表单的结果。保存
obj = self.form.save(commit=False)
obj.user_to = self.kwargs['uname']
obj.user_from = request.user
obj.save()
注意,您不能像那样直接调用self.get()
;您必须始终在成功发布后重定向
return redirect('accounts:list_messages', kwargs={...})
对于方法“post”,请使用request.user.username获取当前登录的用户。帮助我解决了问题。但是,obj.user_to需要一个用户实例,所以我做了obj.user_to=user.objects.get(username=self.kwargs['uname'])