gpt4 book ai didi

Django 1.5 : Understanding of AbstractBaseUser and permissions

转载 作者:行者123 更新时间:2023-12-02 08:54:20 24 4
gpt4 key购买 nike

我创建了一个用户应用程序MyUser这是 AbstractBaseUser 的扩展。我的印象是型号MyUser将取代标准Auth.User ,只要是settings.py中提到的

AUTH_PROFILE_MODULE = '个人资料.MyUser'

我现在的麻烦是无法为 MyUser 模型中注册的用户设置权限。当我尝试设置组成员资格和权限时,收到错误 User' instance expected, got <MyUser: username> .

如何将我的用户模型的用户添加到权限和正确的组中?

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 添加到您的模型声明中即可! :)

class MyUser(AbstractBaseUser, PermissionsMixin):
...

这是relevant part Django 文档。

关于 Django 1.5 : Understanding of AbstractBaseUser and permissions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349194/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com