唯一约束失败:“app”_客户用户名称

2024-10-03 02:39:49 发布

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

我是Django的新人。我用“createsuperuser”注册了一个超级用户,现在我想用我的自定义注册表单创建一个普通用户,但是这向我发送了一个关于唯一约束的错误:

在/registro/registror/registror/

唯一约束失败:Registrusuario_自定义用户.用户名在

请求方式:POST 请求URL:http://127.0.0.1:8000/registro/registrar/ Django版本:2.0.9 异常类型:IntegrityError 异常值:

唯一约束失败:Registrusuario_自定义用户.用户名在

异常位置:C:\Users\riria\Desktop\perrosUnidad3\myvenv\lib\site packages\django\db\backends\sqlite3\基准.py在execute中,第303行 Python可执行文件:C:\Users\riria\Desktop\perrosUnidad3\myvenv\Scripts\python.exe Python版本:3.7.0 Python路径:

['C:\Users\riria\Desktop\perrosUnidad3', 'C:\Users\riria\Desktop\perrosUnidad3\myvenv\Scripts\python37.zip', 'C:\Users\riria\AppData\Local\Programs\Python\Python37\dll', 'C:\Users\riria\AppData\Local\Programs\Python\Python37\lib', 'C:\Users\riria\AppData\Local\Programs\Python\Python37', 'C:\Users\riria\Desktop\perrosUnidad3\myvenv', 'C:\Users\riria\Desktop\perrosUnidad3\myvenv\lib\site packages']

服务器时间:Lun,2018年11月19日17:56:33-0300

这是我的代码:

在模型.py在

class CustomUserManager(UserManager):

    def create_user(self, run, email, fechaNac, nombre, apellido, telefono, regiones, comunas, tipo_vivienda, password=None):
        if not run:
            raise ValueError("Usuario debe ingresar su run")

        user = self.model(
            run = run,
            email = self.normalize_email(email),
            fechaNac = fechaNac,
            nombre = nombre,
            apellido = apellido,
            telefono = telefono,
            regiones = regiones,
            comunas = comunas,
            tipo_vivienda = tipo_vivienda,
        )

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

    def create_superuser(self, run, email, fechaNac, nombre, apellido, telefono, regiones, comunas, tipo_vivienda, password):

        user = self.create_user(
            run = run,
            password=password,
            email=email,
            fechaNac=fechaNac,
            nombre=nombre,
            apellido=apellido,
            telefono=telefono,
            regiones = regiones,
            comunas = comunas,
            tipo_vivienda = tipo_vivienda,
        )

        user.is_admin = True
        user.save(using=self._db)
        return user



class CustomUser(AbstractUser):
    run = models.CharField(max_length=9, unique=True, primary_key=True)
    email = models.EmailField(max_length=30, unique=True, verbose_name='Direccion de correo')  #obtener email con get_email_field_name()
    fechaNac = models.DateField(verbose_name="Fecha de Nacimiento")
    nombre = models.CharField(max_length=15, unique=False) #get_full_name()???
    apellido = models.CharField(max_length=15)
    telefono = models.CharField(max_length=9)
    regiones = models.CharField(max_length=40)
    comunas = models.CharField(max_length=40)
    tipo_viviendas = ((1,'Casa con patio grande'),(2,'Casa con patio pequeño'),(3,'Casa sin patio'),(4,'Departamento'))
    tipo_vivienda = models.IntegerField(choices=tipo_viviendas)
    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=True)

    USERNAME_FIELD = 'run'
    REQUIRED_FIELDS = ['email','fechaNac','nombre','apellido','telefono','regiones','comunas','tipo_vivienda']
    ACCOUNT_USER_MODEL_USERNAME_FIELD = 'run'

    objects = CustomUserManager()



    def __str__(self):
        return self.run

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

    def has_module_perms(self, misPerris):
        return True

    @property
    def is_staff(self):
        return self.is_admin

在表单.py在

^{pr2}$

在视图.py在

def registrar(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect(login_redirect)
    else:
        form = UserCreationForm()

        args = {'form': form}
        return render(request, 'registro/registro.html', args)

Tags: runselfmodelsemailusersusernombretipo