Как установить тип поля по умолчанию для внешнего ключа?
У меня есть простая модель: тип id - int(10)
class Client(models.Model):
name = models.CharField(max_length=45)
surname = models.CharField(max_length=45)
И вторая модель с внешним ключом, ссылающимся на таблицу Client.
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=False, default=1)
class Meta:
managed = True
db_table = 'extended_user'
Когда я запускаю python manage.py makemigrations
и python manage.py migrate
у меня есть:
1215, 'Cannot add foreign key constraint'
SHOW ENGINE INNODB STATUS;
-> FOREIGN KEY (client_id
) REFERENCES client
(id
):
Невозможно найти индекс в ссылающейся таблице, в которой
ссылающиеся столбцы появляются как первые столбцы, или типы столбцов
в таблице и ссылающейся таблице не совпадают для ограничения.
SQL предложение python .\manage.py sqlmigrate principal 0136
:
ALTER TABLE
extended_user
ADD COLUMNclient_id
bigint. ПО УМОЛЧАНИЮ 1 NOT NULL , ДОБАВИТЬ ОГРАНИЧЕНИЕextended_user_client_id_e51a6e7c_fk_client_id
ВНЕШНИЙ KEY (client_id
) REFERENCESclient
(id
); ALTER TABLEextended_user
ALTER COLUMNclient_id
DROP DEFAULT;
Я попробовал client = models.ForeignKey('Client', on_delete=models.DO_NOTHING, blank=True, null=True, default=1)
, но все та же ошибка.
Почему Django использует bigint, когда у меня первичный ключ Int? Как я могу указать тип поля внешнего ключа?