【问题标题】:extending django auth with django norel使用 django norel 扩展 django auth
【发布时间】:2014-07-18 01:35:45
【问题描述】:

我想在 django mongodb 中扩展我的 django 用户创建。创建了一个扩展 User model 的类,还在我的 settings.py 中添加了 AUTH_USER_MODEL = "users.XYZUser" ....这是我的 models.py

class XYZUserManager(BaseUserManager):

    def create_user(self, email,role_id, password=None, **extra_fields):
        """
        Creates and saves a User with the given username, email and password.
        """
        now = timezone.now()
        if not email:
          raise ValueError('The given username must be set')
          email = XYZUserManager.normalize_email(email)
        user = self.model(email=email,
                      is_staff=False, is_active=True, is_superuser=False,
                      last_login=now, date_joined=now,role_id=role_id,emailId=email, **extra_fields)

        user.set_password(password)
        user.save(using=self._db)
        return user

    def create_superuser(self, email, role_id,password, **extra_fields):
       u = self.create_user(email,role_id, password, **extra_fields)
       u.is_staff = True
       u.is_active = True
       u.is_superuser = True
       u.save(using=self._db)
       return u


class XYZUser(User):
    #id=models.AutoField(primary_key=True)
    role_id=models.IntegerField(choices=ROLES,default=2)
    emailId=models.EmailField(unique=True)

    #is_active =models.BooleanField()
    #is_staff=models.BooleanField()
    #date_joined = models.DateTimeField()
    #is_superuser = models.BooleanField()
    #last_login = models.DateTimeField()


    REQUIRED_FIELDS = ['role_id', 'emailId']
    USERNAME_FIELD = 'emailId'

    objects = UserManager()

当我运行 /manage.py syncdb 时出现以下错误

CommandError:一个或多个模型未验证: permission_backend_nonrel.userpermissionlist:'user' 定义了与模型 'auth.User' 的关系,该模型已被换出。更新指向 settings.AUTH_USER_MODEL 的关系。

知道我错过了什么。我的议程是使用电子邮件作为登录字段而不是用户名以及一些额外的字段。

我正在使用 norel 权限进行身份验证

AUTHENTICATION_BACKENDS = (

'permission_backend_nonrel.backends.NonrelPermissionBackend',
)



INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'djangotoolbox',
    'users',
    'permission_backend_nonrel',

)

【问题讨论】:

  • 任何解决方案。有同样的问题

标签: django mongodb django-nonrel


【解决方案1】:

尝试从 AbstractUserAbstractBaseUser 继承一个类 XYZUser

【讨论】:

  • @ha22109 您能在此处粘贴 XYZUser 类的应用程序名称吗?
  • 应用名称:用户
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多