Django.db.utils.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails
from django.db import models
from django.contrib.auth.models import User
Ранее мои модели были такими .
class Login(models.Model):
pid = models.AutoField(primary_key=True)
custom_username = models.BooleanField(default=False)
tnx_hash = models.CharField(max_length=100, null=True, blank=True)
def __str__(self):
return self.username
Затем я изменил его на такой, чтобы наследовать от базовой модели пользователя admin.
class Login(User):
pid = models.AutoField(primary_key=True)
custom_username = models.BooleanField(default=False)
tnx_hash = models.CharField(max_length=100, null=True, blank=True)
def __str__(self):
return self.username
Теперь, когда я запускаю makemigrations и migrate, получаю следующую ошибку .
File "/Users/soubhagyapradhan/Desktop/upwork/polyverse/polyverse_api/env/lib/python3.8/site-packages/MySQLdb/connections.py", line 259, in query
_mysql.connection.query(self, query)
django.db.utils.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`baby`.`#sql-16a7_6a`, CONSTRAINT `api_login_user_ptr_id_7f748092_fk_auth_user_id` FOREIGN KEY (`user_ptr_id`) REFERENCES `auth_user` (`id`))')
Пожалуйста, посмотрите. Как я могу безопасно решить эту проблему. Потому что у меня есть данные в моей базе данных и таблица login является внешним ключом для многих таблиц.
Наследование от модели User не работает, поскольку у нее есть собственный первичный ключ id. У вас есть первичный ключ, определенный pid в вашей модели Login.
Вместо этого, если вы хотите расширить модель Login только полями User, вы можете наследоваться от класса AbstractUser.
Если вы хотите переключиться на модель Login в качестве модели пользователя по умолчанию, вам придется каким-то образом перенести данные из таблицы auth_user в таблицу api_login, используя миграцию данных или SQL, а также установить AUTH_USER_MODEL = "api.Login"