当前位置: 首页 > 面试题库 >

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

薛元忠
2023-03-14
问题内容

在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



 类似资料:
  • 问题内容: 我必须根据当前URL动态构建一个URL。使用标记是最简单的方法,但是我需要当前的URL名称来动态生成新的URL。 如何获取链接到指向当前视图的urlconf的url名称? 编辑:我知道我可以手动使用url,但是我宁愿避免使用它,因为它是讲座的一部分,我只想演示一种构建url的方法。 学生知道如何使用。他们知道当他们必须根据当前URL生成更完整的URL时遇到问题。最简单的方法是再次使用,

  • X1.4.0新增 sp_get_current_admin_id() 功能: 获取当前登录管理员id,同get_current_admin_id() 参数: 无 返回: 类型int,管理员的id

  • 问题内容: 我想知道如何在模板中获取当前URL。 说我目前的网址是: 如何将其返回到模板? 问题答案: Django 1.9及更高版本: 旧:

  • 最近,我成功地获取了使用google Directory API添加到https://admin.google.com/的用户,并为此任务进行了服务器到服务器的认证。 现在,我需要在办公室365做同样的事情。我从哪里开始?像https://admin.google.com/,它在office 365中有什么? **这是我需要的Azure Active Directory订阅吗* * 从哪里以及如何

  • 问题内容: 我有一个Post模型,在将其添加到数据库之前,它需要一个特定的类别,并且我希望该类别能够自动生成。单击addPost按钮会将您带到其他页面,因此将通过获取上一页URL的一部分来确定类别。 有没有一种方法可以将上一页URL作为字符串获取? 谢谢 编辑:我在这里添加了我的AddPost按钮。 问题答案: 你可以使用来做到这一点,但是如果只有选项卡的上一页来自你的网站,那么它将存在,否则中将

  • 我正在使用5.2.0版本的spring security和spring-security-saml2-service-provider。释放我正在通过IDP进行身份验证,以获取当前断言,以便将其映射到本地系统中的用户。我使用此代码获取Saml2Authentication对象 但我找不到用户。我可以获得saml2响应(authentication.getSaml2Response),但我不确定如何