Django-модель User создает поле user_ptr_id
Пытаюсь обновить Django c 2 на 3.2.
У меня своя модель User-а:
class Agent(User):
objects = AgentManager()
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
editable=False,
related_name='agent',
on_delete=models.CASCADE,
parent_link=True,
)
Django-модель User-а делает его swappable:
class User(AbstractUser):
"""
Users within the Django authentication system are represented by this
model.
Username and password are required. Other fields are optional.
"""
class Meta(AbstractUser.Meta):
swappable = 'AUTH_USER_MODEL'
Запускаю тесты с пустой базой и получаю ошибку:
django.db.utils.IntegrityError: null value in column "user_ptr_id" of relation "staff_agent" violates not-null constraint
DETAIL: Failing row contains (null, null, 1, null, null, null, null, null, null).
На этапе миграций создается поле user_ptr_id, которое не создавалось на Django 2, и далее оно не заполняется, потому и выдает ошибку.
Вопрос состоит в следующем: как отключить создание этого поля или где Django его создает.
Ответы (1 шт):
Я разобрался сам. Если Django не находит onetoone-поле к User с параметром parent_link=True, то он решает создать свое поле. Потом я увидел, что, хоть в поле и проставлен parent_link=True, в миграции его нет, видимо кто-то проставил тут и забыл пересоздать миграции.
Проставил для миграции это поле и всё, Django перестал создавать свое поле.