【问题标题】:how to check if a user is in a default django group? in the admin panel (admin.py)如何检查用户是否在默认的 django 组中?在管理面板 (admin.py)
【发布时间】:2021-10-26 10:35:51
【问题描述】:

我的逻辑是,当具有 is_stuff 权限的用户进入管理面板并尝试创建例如新闻时,程序会检查他,他在哪个组,如果这个组存在,那么它应该发出字段集能力有限,或其他领域...

我检查了此链接 (In Django, how do I check if a user is in a certain group?),但它不适用于我的情况,因为我必须在管理面板中检查,而不是将其返回到 api 或模板。

我尝试执行以下操作:在 admin.py (一)

    def get_fieldsets(self, request, obj=None):
       group = Group(name="OutSource")
       if request.user.groups(name=group):
          # first_fields = {...}
       else:
          # second_fields = {...}

回调:

TypeError: 'NoneType' object is not callable

admin.py (b):

if request.user.groups.all()[0].name == "OutSource":

回调:

IndexError: list index out of range

admin.py (c):

if request.user.groups.filter(name='OutSource').exists():

回调:

unhashable type: 'dict'

【问题讨论】:

    标签: python django admin fieldset


    【解决方案1】:

    抱歉,我找到了解决问题的方法。如果有人需要,这里是答案

    def get_fieldsets(self, request, obj=None):
        users_in_group = Group.objects.get(name="OutSource").user_set.all()
        if request.user in users_in_group:
           # fields = (...)
        else:
           # fields = (...)
        return fields
    

    【讨论】:

      猜你喜欢
      • 2014-05-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2015-06-22
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 2018-06-03
      相关资源
      最近更新 更多