【问题标题】:My created user don't have default permission (add,delete,change)?我创建的用户没有默认权限(添加、删除、更改)?
【发布时间】:2014-12-14 11:14:09
【问题描述】:

我是 Django 的新手,如果有人帮助我,我会很高兴。 我在命令行中创建用户,我的用户也没有“添加”权限和其他默认(删除,更改)权限!!

>>> b = User.objects.create_user('mina','mina@dd.dd','123456')
>>> b.save()
>>> b.has_perm('student.add_user')
False

这是我设置安装的应用程序:

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'student',  
)

和我的模型“用户”:

class user(models.Model):
    user_name=models.CharField(max_length=200,primary_key=True)
    password=models.IntegerField(max_length=10)
    user_id=models.IntegerField(max_length=3)
    name=models.CharField(max_length=200)
    email=models.EmailField(max_length=200)
    phone=models.IntegerField(max_length=10)
    task=models.ForeignKey(task)
    class Meta:
        unique_together = ('user_id', 'task')
    def __unicode__(self):
        return u'name:%s--------IDnumber:%s' % (self.name,str(self.user_id))

为什么用户没有这些权限?我该怎么做才能添加该权限? 对不起,我的英语不好。

【问题讨论】:

    标签: python django user-permissions


    【解决方案1】:

    只有超级用户拥有所有权限。应为非超级用户添加权限。

    from django.contrib.auth.models import Permission
    
    ...
    
    b.user_permissions.add(Permission.objects.get(content_type__app_label='student',
                                                  codename='add_user'))
    b.user_permissions.add(Permission.objects.get(content_type__app_label='student',
                                                  codename='change_user'))
    b.user_permissions.add(Permission.objects.get(content_type__app_label='student',
                                                  codename='delete_user'))
    

    【讨论】:

    • 非常感谢。我认为默认权限适用于所有用户。现在可以使用了。
    【解决方案2】:

    试试这个:

    from django.contrib.auth.models import User, Group, Permission
    
    b = User.objects.create_user('mina','mina@dd.dd','123456') 
    permission = Permission.objects.get(name='Can add user') # get permission by name
    b.user_permissions.add(permission) #add permission to user
    b.save()
    

    或者您可以创建一个具有您想要的所有权限的group,并将用户添加到该组,如下所示:

    group = Group.objects.get(name='wizard')
    user.groups.add(group)
    

    看看this

    【讨论】:

      【解决方案3】:

      看起来您正在使用自定义用户模型。你的用户模型需要继承 PermissionsMixin

      from django.contrib.auth.models import PermissionsMixin
      

      另外,建议您的模型从 AbstractBaseUser 继承

      https://docs.djangoproject.com/en/dev/topics/auth/customizing/#specifying-a-custom-user-model

      class User(AbstractBaseUser, PermissionsMixin):
          ...
      

      【讨论】:

        猜你喜欢
        • 2021-09-01
        • 1970-01-01
        • 2013-10-08
        • 1970-01-01
        • 2019-11-27
        • 1970-01-01
        • 1970-01-01
        • 2011-03-07
        • 2019-06-02
        相关资源
        最近更新 更多