Это «большое» изменение, требуемое для вашего проекта Django, и, вероятно, что-то, что должно было быть сделано в начале, а не в конце. Поскольку кто-то из опытных миграций нарушает модели User на производственных системах, я согласен с @Burhan Khalid - оставьте модель contrib.auth.models.User
такой, какой она есть.
Сначала давайте посмотрим на предупреждения в документации, от Substituting a custom User model:
Изменение этого параметра после того, как у вас есть таблицы, созданные не поддерживается от makemigrations и приведет вас, чтобы вручную исправить схему, переносите данные из старой таблицы пользователя и, возможно, вручную повторно применяйте некоторые миграции.
Я понимаю, что вы хотите «просто увеличить» длину этих полей, но это не тривиальное изменение, а одно из того, что «предназначено» для миграции. «Django-way» для решения этой проблемы заключается в добавлении пользовательской модели, отвечающей новым требованиям. К сожалению, это означает, что вам придется обрабатывать миграцию вручную, если у вас есть существующие данные пользователя на производственном сервере. Стандартные инструкции на Customizing authentication in Django помогут вам.
преимущества вы получите, который, мы надеемся, будет окупаться тяжелую работу, являются:
- Код проекта защищен от каких-либо обновлений. Пользовательская модель по умолчанию не будет иметь никаких настроек.
- Код проекта будет соответствовать «Django-way», что упростит работу других разработчиков и членов команды в будущем.
Я понимаю, что это, вероятно, не то, что вы хотите услышать, но я надеюсь, что это поможет.
Вы должны изучить [пользовательскую модель пользователя] (https://docs.djangoproject.com/en/1.9/topics/auth/customizing/#specifying-a-custom-user-model) - как делать то, что вы предлагаете, будет ломаться при обновлении django. –
@BurhanKhalid то, что я прошел через проект, и теперь клиент хочет поддерживать более крупные поля имени пользователя и имени. Поэтому я не рассматриваю вариант, который заставит меня пройти через множество изменений. Я предполагаю, что если я использую пользовательскую модель пользователя, мне тоже нужно будет внести необходимые изменения в код? –