Добавить внешний ключ в модель "один к одному" (расширенная модель пользователя)
Мой портфель позволяет пользователям из модели Client входить в систему.
Я расширил модель User отношениями один-к-одному, как сказано в Django Documentation.
Модель клиента:
class Client(models.Model):
name = models.CharField(max_length=45)
surname = models.CharField(max_length=45)
address = models.CharField(max_length=45)
email = models.EmailField(max_length=50, blank=False, null=False, default='example@example.com')
Расширенный пользователь:
from django.contrib.auth.models import User
class ExtendedUser(models.Model):
user = models.OneToOneField(User, on_delete=models.DO_NOTHING)
# client = models.ForeignKey('Client', on_delete=models.DO_NOTHING, blank=True, null=True)
class Meta:
managed = True
db_table = 'extended_user'
В таблице клиента (mysql) у меня есть строки.
Когда я использую python manage.py migrate
терминал показывает мне django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint')
.
Если я не пишу строку ForeignKey, то ошибка не возникает, но мне нужен этот ForeignKey.
Что здесь не так? Я пробовал разные параметры в строке ForeignKey, но ничего.
Я думаю, что вы должны обратиться к имени класса, т.е.: к Client вместо User
class ExtendedUser(models.Model):
user = models.OneToOneField(Client, on_delete=models.DO_NOTHING)