在Django的ModelAdmin中,我需要显示根据用户拥有的权限定制的表单。有没有一种方法可以将当前用户对象放入表单类,以便我可以在其__init__方法中自定义表单? 我认为将当前请求保存在线程本地中是一种可能,但这是我的最后选择,我认为这是一种不良的设计方法…。
__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
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)
*args