Суть проблемы при createsuperuser, добавляет нового пользователя, но с ошибкой, что такой уже существует, хотя его еще не существует.
Сделал переопределение стандартной модели User с помощью этого гайда - http://dunmaksim.blogspot.ru/2015/05/django-18.html
Моя модель юзера:
class Account(AbstractBaseUser, PermissionsMixin):
id = models.IntegerField(primary_key=True, db_column='memb_id')
login = models.CharField(max_length=10,
db_column='memb_login',
unique=True,
verbose_name='логин',
validators=[validate_regex_login])
email = models.CharField(max_length=255, unique=True, verbose_name='почта')
block_items = models.IntegerField(default=0)
block_items_time = models.IntegerField(default=0)
ip_reg_site = models.CharField(max_length=15)
ip_last_site = models.CharField(max_length=15)
date_create = models.DateTimeField('Дата создания')
is_banned = models.BooleanField(default=0)
is_staff = models.BooleanField(default=0)
# Требуется для админки
@property
def is_active(self):
if self.is_banned:
return False
else:
return True
def get_short_name(self):
return self.login
def __str__(self):
return self.login
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
USERNAME_FIELD = 'login'
REQUIRED_FIELDS = ['email']
objects = UserManager()
class Meta:
verbose_name = 'Аккаунт'
verbose_name_plural = 'Аккаунты'
db_table = "members"
managed = False
Модель менеджера:
class UserManager(BaseUserManager):
def create_user(self, login, email, password=None):
if not login:
raise ValueError('Необходимо указать логин')
if not email:
raise ValueError('Email непременно должен быть указан')
user = self.model(
login=login,
email=UserManager.normalize_email(email),
)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, login, email, password):
user = self.create_user(login=login, email=email, password=password)
user.is_admin = True
user.is_superuser = True
user.save(using=self._db)
return user
Traceback:
#python manage.py createsuperuser
Логин: asdsd
Почта: asds
Password:
Password (again):
Traceback (most recent call last):
File "C:\Python34\lib\site-packages\django\db\backends\utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "C:\Python34\lib\site-packages\django\db\backends\mysql\base.py", line 124, in execute
return self.cursor.execute(query, args)
File "C:\Python34\lib\site-packages\MySQLdb\cursors.py", line 220, in execute
self.errorhandler(self, exc, value)
File "C:\Python34\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
raise errorvalue
File "C:\Python34\lib\site-packages\MySQLdb\cursors.py", line 209, in execute
r = self._query(query)
File "C:\Python34\lib\site-packages\MySQLdb\cursors.py", line 371, in _query
rowcount = self._do_query(q)
File "C:\Python34\lib\site-packages\MySQLdb\cursors.py", line 335, in _do_query
db.query(q)
File "C:\Python34\lib\site-packages\MySQLdb\connections.py", line 280, in query
_mysql.connection.query(self, query)
_mysql_exceptions.IntegrityError: (1062, "Duplicate entry 'asdsd' for key 'IX_MEMBERS_1'")