我无法将我的项目与Djang中的自定义用户同步

2024-05-18 19:14:38 发布

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

我在Django模型中有创建自定义用户的下一个代码: 从django.db公司导入模型

#Clases abstractas para los usuarios personalizados
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin, BaseUserManager

#El mannager que seria nuestro objects que es la transicion entre modelo y la bd
class MiMannager(BaseUserManager): #Nos exige create_user y create_superuser

    #Metodo abstracto para crear usuarios
    def _create_user(self, username, dni, password, is_staff, is_superuser, **extra_fields):
        if not username:
            raise ValueError('El username debe ingresarse')

        user = self.model(username = username, dni = dni, is_active = True, is_staff = is_staff, is_superuser = is_superuser, **extra_fields)
        user.set_password(password)
        #En que base de datos se va a guardar
        user.save(using=self._db)

        return user

    #Dos metodos diferentes para crear usuarios
    def create_user(self, username, dni, password=None, **extra_fields):
        return self._create_user(username, dni, password, False, False, **extra_fields)

    def create_superuser(self, username, dni, password, **extra_fields):
        return self._create_user(username, dni, password, True, True, **extra_fields)   
#PermissioMixin es para los permisos del superusuario

class Usuario(AbstractBaseUser, PermissionsMixin):

    username = models.CharField(max_length=140, unique=True)
    dni = models.IntegerField(unique=True)
    nombre = models.CharField(max_length=140)
    apellidos = models.CharField(max_length=140)

    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)

    objects = MiMannager()

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['dni']

所以我得到一个错误,比如:

^{pr2}$

我只是在看教程,但我不明白我的代码有什么问题。在


Tags: selftruefieldsismodelscreateusernamepassword
1条回答
网友
1楼 · 发布于 2024-05-18 19:14:38

尝试使用:

class Usuario(models.Model):
    username = models.CharField(max_length=140, unique=True)
    dni = models.IntegerField(unique=True)
    nombre = models.CharField(max_length=140)
    apellidos = models.CharField(max_length=140)

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['dni']
    objects = MiMannager()

    def __unicode__(self):
        return self.username

    class Meta:
        db_table = 'users'

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_staff(self):
        return True

    def has_perm(self, perm, obj=None):
        return True

    def has_module_perms(self, app_label):
        return True

注意我是从继承的模型。模型对于usario。在

在设置.py在

^{pr2}$

您可能还想看看一个示例项目,我曾经用Drupal users表验证我的Django应用程序。在

Link to GitHub Repository

请检查存储库的drupal_auth文件夹(检查经理.py). 在

同时检查论坛的最后一行/设置.py同一存储库。在

我希望这有帮助。在

相关问题 更多 >

    热门问题