Django 1.5:理解AbstractBaseUser和权限
我创建了一个用户应用程序Django 1.5:理解AbstractBaseUser和权限,django,model,permissions,django-1.5,Django,Model,Permissions,Django 1.5,我创建了一个用户应用程序MyUser,它是AbstractBaseUser的扩展。我的印象是,MyUser模型将取代标准的Auth.User,只要settings.py AUTH_PROFILE_MODULE='PROFILE.MyUser' 我的问题是现在无法为在MyUser模型中注册的用户设置权限。当我试图设置组成员身份和权限时,我得到了预期的错误User'实例,得到了 如何将我的用户模型的用户添加到权限和正确的组中 class MyUserManager(BaseUserManager):
MyUser
,它是AbstractBaseUser
的扩展。我的印象是,MyUser
模型将取代标准的Auth.User
,只要settings.py
AUTH_PROFILE_MODULE='PROFILE.MyUser'
我的问题是现在无法为在MyUser模型中注册的用户设置权限。当我试图设置组成员身份和权限时,我得到了预期的错误User'实例,得到了
如何将我的用户模型的用户添加到权限和正确的组中
class MyUserManager(BaseUserManager):
def create_user(self, username, email, phone, password=None, company=False):
if not email:
raise ValueError('Users must have an email address')
if not username: username = email.split('@')[0]
user = self.model(
email=MyUserManager.normalize_email(email),
username=username,phone=phone,)
user.set_password(password)
user.save(using=self._db)
# add to user group and set permissions
if company:
g = Group.objects.get(name='company')
p = Permission.objects.get(codename='add_company')
else:
g = Group.objects.get(name='user')
p = Permission.objects.get(codename='add_user')
g.user_set.add(user)
user.user_permissions.add(p)
return user
class MyUser(AbstractBaseUser):
username = models.CharField(max_length=254, unique=True, blank=True, null=True)
email = models.EmailField(max_length=254, unique=True, db_index=True)
phone = models.CharField(_('Phone Number'), max_length=25, blank=True, null=True,)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['phone']
objects = MyUserManager()
def get_full_name(self):
return self.email
...
只需在模型声明中添加
PermissionsMixin
)
这是Django文档的详细说明。您可能已经解决了问题,但为了完整起见,您是否打算在Django 1.5中创建自定义用户模型时参考设置AUTH_USER_模型与AUTH_PROFILE_模块
ref:如何为用户设置组级别?当我用
g.user\u set.add(user)
设置它时,我会得到TypeError:“预期的用户”实例,再次得到作为错误消息的。用user.groups.add(g)
进行设置。
class MyUser(AbstractBaseUser, PermissionsMixin):
...