我是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)
目前没有回答
相关问题 更多 >
编程相关推荐