У меня есть большое приложение Django, в настоящее время пытающееся обновить его с 1.6 до 1.7 (были попытки перейти прямо на 1.11, но это было слишком много проблем, поэтому я планирую делать это по одному несовершеннолетнему за раз).
Я следую инструкциям Upgrade from South и удалил все предыдущие миграции, но не могу заставить makemigrations
работать. В настоящее время проблема заключается в том, что модель auth.User
была исправлена для включения двух новых полей:
User.add_to_class('profile',
models.ForeignKey('access.Profile', null=True, blank=True,
related_name='user_foreignkey'))
User.add_to_class('profiles',
models.ManyToManyField('access.Profile', null=True,
blank=True))
Этот патч был сделан в отдельном приложении. Если я просто оставлю его там, где он есть, я получу следующую ошибку при запуске python manage.py makemigrations
:
ValueError: Lookup failed for model referenced by field auth.User.profiles:
access.Profiles
Я попытался переместить вызовы add_to_class
в тот же файл, где определен Profile
(после определения), но получил ту же ошибку. Я также попытался изменить синтаксис с 'access.Profile'
на Profile
, но безрезультатно. Есть ли что-то еще, что могло бы сделать эту работу?
Если нет, поскольку я добавляю поля в модель, я полагаю, что правильным подходом было бы расширение модели AbstractUser, как предлагает в этом руководстве . Проблема в том, что новая начальная миграция создаст таблицу access_user
вместо использования существующей auth_user
. Было бы безопасно просто переименовать auth_user
в access_user
и подделать миграцию?
Любые другие предложения о том, как преодолеть это с наименьшим возможным рефакторингом (руководство всегда считает, что есть более срочные вещи, чем обновление), приветствуются.