Как установить тип поля по умолчанию для внешнего ключа?

У меня есть простая модель: тип 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 COLUMN client_id bigint. ПО УМОЛЧАНИЮ 1 NOT NULL , ДОБАВИТЬ ОГРАНИЧЕНИЕ extended_user_client_id_e51a6e7c_fk_client_id ВНЕШНИЙ KEY (client_id) REFERENCES client(id); ALTER TABLE extended_user ALTER COLUMN client_id DROP DEFAULT;

Я попробовал client = models.ForeignKey('Client', on_delete=models.DO_NOTHING, blank=True, null=True, default=1), но все та же ошибка.

Почему Django использует bigint, когда у меня первичный ключ Int? Как я могу указать тип поля внешнего ключа?

Вернуться на верх