Django:如何以管理表单获取当前用户? [英] Django: How to get current user in admin forms?
问题描述
在Django的 ModelAdmin
中,我需要显示根据用户拥有的权限定制的表单.有没有一种方法可以将当前用户对象放入表单类,以便我可以在其 __ init __
方法中自定义表单?
In Django's ModelAdmin
, I need to display forms customized according to the permissions an user has. Is there a way of getting the current user object into the form class, so that i can customize the form in its __init__
method?
我认为可以将当前请求保存在本地线程中,但这是我的最后选择,因为我认为这是一种不良的设计方法.
I think saving the current request in a thread local would be a possibility but this would be my last resort because I'm thinking it is a bad design approach.
推荐答案
这是我最近为博客所做的事情:
Here is what i did recently for a 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
我现在可以通过访问 self.current_user
这是一个旧答案,最近看了一下,我意识到 get_form
方法应修改为:
This is an old answer, and looking at it recently I realized the get_form
method should be amended to be:
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:如何以管理表单获取当前用户?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!