Django 3.2 обновить AutoField до BigAutoField обратная совместимость с отношениями по внешнему ключу

Я столкнулся с проблемой после обновления моего проекта с Django 2.2 до Django 3.2.

В Django 2.2 первичные ключи создаются с помощью AutoField, что означает, что в MySql они считаются int(11) и все внешние ключи от этой таблицы также должны быть int(11). В Django 3.2 первичные ключи теперь создаются с помощью BigAutoField, который в MySql создает тип bigint(20), поэтому я не могу создать никаких отношений внешнего ключа со старыми таблицами.

Согласно документации это можно изменить в настройках, используя DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'. Это работает при создании первичных ключей как int(11), однако поля внешних ключей по-прежнему создаются как bigint(20), что означает, что связь не может быть создана, поскольку они должны быть одного типа. Здесь говорится, что вы можете изменить все существующие таблицы на BigAutoField, но это также не позаботится об отношениях внешних ключей.

Есть ли способ легко изменить все первичные ключи и их отношения на другой тип? Я что-то упустил в документации Django, где они также обеспечивают совместимость связанных ключей и первичных ключей?

Я бы, очевидно, предпочел изменить все мои существующие данные для работы с BigAutoField, если все будущие выпуски Django теперь будут использовать его по умолчанию

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