【问题标题】:django - set user permissions when user is automatically created using get_or_createdjango - 使用 get_or_create 自动创建用户时设置用户权限
【发布时间】:2013-12-20 02:31:46
【问题描述】:

Django 1.5,python 2.6

模型在特定条件下自动创建用户:

User.objects.get_or_create(username=new_user_name, is_staff=True) 
u = User.objects.get(username=new_user_name)
u.set_password('temporary')

除了设置用户名、密码和 is_staff 状态之外,我还想设置用户的权限 - 类似:

u.user_permissions('Can view poll')

u.set_permissions('Can change poll')

这可能吗?谢谢!

【问题讨论】:

    标签: python django django-admin django-authentication


    【解决方案1】:

    使用add and remove 方法:

     from django.contrib.auth.models import Permission
     permission = Permission.objects.get(name='Can view poll')
     u.user_permissions.add(permission)
    

    【讨论】:

      【解决方案2】:

      Andrew M. Farrell 的回答是正确的。我只添加了get_user_model()的使用和一个完整的例子。

      from django.contrib.auth import get_user_model
      from django.contrib.auth.models import Permission
      u = get_user_model().get(username=new_user_name)
      

      要获得您可以使用的权限

      permission = Permission.objects.get(name='Can view poll')
      

      permission = Permission.objects.get(codename='can_view_poll')
      

      然后将其添加到用户权限集

      u.user_permissions.add(permission)
      

      【讨论】:

        猜你喜欢
        • 2020-04-07
        • 2011-03-07
        • 2015-08-01
        • 2015-10-17
        • 2018-12-10
        • 1970-01-01
        • 2019-09-17
        • 2018-12-14
        • 2012-08-02
        相关资源
        最近更新 更多