хорошо, я создал собственную модель Auth, наследуя от AbstractBaseUser.Когда я создаю простого пользователя, все в порядке, но затем я пытаюсь создать суперпользователя, что-то идет не так.
вот мой пользователь и менеджер пользователя:
class PatientUserManager(BaseUserManager):
def create_user(self, snils, name=None, surname=None, telephone=None, password=None, is_superuser=None):
'''Создание пользователя со снилсом, именем, фамилией и паролем'''
if not snils:
raise ValueError('Отсутствует Номер СНИЛС')
user = self.model(snils, name, surname, telephone)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, snils, name, surname, telephone, password):
user=self.create_user(snils, name, surname, telephone)
user.is_superuser = True
user.is_admin = True
user.is_staff = True
user.set_password(password)
user.save(using=self._db)
return user
class PatientUser(AbstractBaseUser, PermissionsMixin):
snils = models.CharField('СНИЛС', max_length= 14, unique=True)
email = models.EmailField('email', max_length= 255, blank=True)
name = models.CharField('Имя', max_length= 50, blank=True)
surname = models.CharField('Фамилия', max_length= 80, blank=True)
patronimic = models.CharField('Отчество', max_length= 80, blank=True)
date_joined = models.DateTimeField('Дата Регистрации', auto_now_add=True)
telephone = models.CharField('Номер телефона', max_length= 18, blank=True)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
USERNAME_FIELD = 'snils'
EMAIL_FIELD = 'email'
REQUIRED_FIELDS = ['name', 'surname', 'telephone']
objects = PatientUserManager()
def get_full_name(self):
'''
Возвращает first_name и last_name с пробелом между ними.
'''
full_name = '%s %s' % (self.name, self.surname)
return full_name.strip()
def get_short_name(self):
'''
Возвращает сокращенное имя пользователя.
'''
return self.name
, когда я пытаюсь создать суперпользователя , я получаю сообщение об ошибке:
ValueError: invalid literal for int() with base 10: '555-555-555 55'
, но если вместо поля 555-555-555 55 ввести целое число в поле «СНИЛС», он начинает жаловаться на фамилию:
СНИЛС: 47
Имя: Vladimir
Фамилия: Suddenok
Номер телефона: 8800
Password:
Password (again):
...
["'Suddenok' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."].
Хорошо, я проявил настойчивость и продолжал решать проблемы по мере их появления.изменил фамилию:
СНИЛС: 47
Имя: Vladimir
Фамилия: 2018-08-14 12:47
Номер телефона: 8800
Password:
Password (again):
...
django.core.exceptions.ValidationError: ["'8800' value must be either True or False."]
изменил Телефон:
СНИЛС: 47
Имя: Vladimir
Фамилия: 2018-08-14 12:47
Номер телефона: True
Password:
Password (again):
...
Traceback (most recent call last):
File "/home/maumba/ProjectPython/VE/lib/python3.6/site-packages/django/db/backends/utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
psycopg2.IntegrityError: null value in column "date_joined" violates not- null constraint
DETAIL: Failing row contains (47, !t0cnBjuTplCtE8vJRGsIgsLN5U0pTDXzg22rWFEF, 2018-08-14 12:47:00+00, t, , , , , , null, , t, f, f).
спасибо за внимание