首页 > 解决方案 > 如何在 ModelForm init() 中获取当前用户?

问题描述

我想为每个具有不同权限的用户显示不同的内容,我试图从init()ModelForm 类中的函数中获取当前用户,但失败了

下面的代码是我当前在 ModelForm 中的 init()

def __init__(self, *args, **kwargs):

    self.user = kwargs.pop('user',None)
    super(MyForm, self).__init__(*args, **kwargs)

但是 self.user 仅在发送表单后才起作用,例如在 is_valid()函数中或在clean_data()函数中

我总是得到“无”值 我应该继续尝试在 ModelForm 中获取当前用户self.user,还是有更好的方法来实现该功能?init()init()

标签: pythondjango

解决方案


您需要从视图发送此数据。例如,在基于通用类的编辑视图中,您可以使用get_form_kwargs()

class YourView(FormView):
   form_class = YourForm
   ...

   def get_form_kwargs(self):
    kwargs = super(YourView, self).get_form_kwargs()
    kwargs['user'] = self.request.user
    return kwargs

在其他情况下,通过传递已知参数启动表单user

def some_view(request):
    form = YourForm(request.POST, user=request.user)

推荐阅读