我是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))
为什么用户没有这些权限?以及如何添加该权限? 对不起我的英语很抱歉。
答案 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):
...