Модель пользователя-клиента с PK UUI не может войти на сайт администратора в Django 3.0, PostgreSQL - PullRequest
0 голосов
/ 18 июня 2020

Моя модель пользователя-клиента выглядит так:

class User(AbstractBaseUser):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True)
email = models.EmailField(unique=True)
is_staff = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []

objects = UserManager()

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

def has_module_perms(self, app_label):
    return self.is_admin

def __str__(self):
    return self.email

class Meta:
    db_table = 'login'

Когда я пытаюсь войти в систему с правами администратора после выполнения manage.py createduperuser, выдается следующая ошибка:

ProgrammingError at /admin/
operator does not exist: integer = uuid
LINE 1: ...NER JOIN "login" ON ("django_admin_log"."user_id" = "login"....

I поймите, что это связано с тем, что PostgreSQL строго типизирован и Django не хочет принимать входящий тип поля. Я хочу go обойти эту проблему, так как многие учебные пособия для пользователей указывают первичный ключ типа UUID и, похоже, не сталкиваются с этой проблемой, когда в шагах предлагается войти в систему с правами администратора и протестировать ее.

...