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

2024-06-13 09:34:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我是刚到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))

为什么用户没有这些权限?我该怎么做才能添加这个权限呢? 我很抱歉我的英语不好。你知道吗


Tags: django用户nameselfid权限taskmodels
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):
    ...

只有超级用户拥有所有权限。应向非超级用户添加权限。你知道吗

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

试试这个:

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。你知道吗

相关问题 更多 >