Django:如何以管理表单获取当前用户

Django的ModelAdmin中,我需要显示根据用户拥有的权限定制的表单。有没有一种方法可以将当前用户对象放入表单类,以便我可以在其__init__方法中自定义表单?

我认为将当前请求保存在线程本地中是一种可能,但这是我的最后选择,我认为这是一种不良的设计方法…。

回答:

这是我最近为Blog做的事情:

class BlogPostAdmin(admin.ModelAdmin):

form = BlogPostForm

def get_form(self, request, **kwargs):

form = super(BlogPostAdmin, self).get_form(request, **kwargs)

form.current_user = request.user

return form

现在,我可以forms.ModelForm通过访问self.current_user

编辑:这是一个老答案,最近看一下,我意识到该get_form方法应该修改为:

    def get_form(self, request, *args, **kwargs):

form = super(BlogPostAdmin, self).get_form(request, *args, **kwargs)

form.current_user = request.user

return form

(请注意*args

以上是 Django:如何以管理表单获取当前用户 的全部内容, 来源链接: utcz.com/qa/427434.html

回到顶部