我创建的用户没有默认权限(添加,删除,更改)?

时间:2014-10-19 09:44:53

标签: python django user-permissions

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

>>> 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))

为什么用户没有这些权限?以及如何添加该权限? 对不起我的英语很抱歉。

3 个答案:

答案 0 :(得分: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'))

答案 1 :(得分:0)

试试这个:

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

答案 2 :(得分:0)

看起来您正在使用自定义用户模型。您的用户模型需要继承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):
    ...