Ответ 1
Чтобы изменить имя приложения в Django, выполните следующие действия:
- Переименуйте папку, которая находится в корневом каталоге проекта
- Измените любые ссылки на ваше приложение в своих зависимостях, то есть файлы приложений
views.py
,urls.py
, 'manage.py' иsettings.py
. - Измените таблицу базы данных
django_content_type
следующей командой:UPDATE django_content_type SET app_label='<NewAppName>' WHERE app_label='<OldAppName>'
- Также, если у вас есть модели, вам придется переименовать таблицы моделей. Для postgres используйте
ALTER TABLE <oldAppName>_modelName RENAME TO <newAppName>_modelName
. Для mysql тоже я думаю, что это то же самое (как упоминалось @null_radix) - (Для Django >= 1.7) Обновите таблицу
django_migrations
, чтобы избежать повторного запуска предыдущих миграций:UPDATE django_migrations SET app='<NewAppName>' WHERE app='<OldAppName>'
. Примечание: есть некоторые дебаты (в комментариях), если этот шаг необходим для Django 1.8+; Если кто-то знает наверняка, пожалуйста, обновите здесь. - Если ваш метатег
models.py
содержитapp_name
, обязательно переименуйте его тоже (упомянутый @will). - Если у вас есть namespaced ваши папки
static
илиtemplates
внутри вашего приложения, вам также нужно будет переименовать их. Например, переименуйтеold_app/static/old_app
вnew_app/static/new_app
. - Для переименования django
models
вам нужно будет изменить записьdjango_content_type.name
в БД. Для postgreSQL используйтеUPDATE django_content_type SET name='<newModelName>' where name='<oldModelName>' AND app_label='<OldAppName>'
Мета-точка (если используется virtualenv): Стоит отметить, что если вы переименовываете каталог, содержащий ваш virtualenv, вероятно, будет несколько файлов в вашем env, которые содержат абсолютный путь, а также понадобятся быть обновленным. Если вы получаете ошибки, такие как ImportError: No module named ...
, это может быть преступником. (благодаря @danyamachine для обеспечения этого).
Другие ссылки:, вы также можете ссылаться на приведенные ниже ссылки для более полного изображения
- Переименование приложения с помощью Django и South
- Как перенести модель из одного приложения django и в новое?
- Как изменить имя приложения Django?
- Обратная миграция с Django South
- Самый простой способ переименовать модель с помощью Django/South?
- код Python (благодаря A.Raouf), чтобы автоматизировать вышеуказанное шаги (неактивный код. Вы были предупреждены!)
- код Python (благодаря rafaponieman), чтобы автоматизировать вышеуказанное шаги (неактивный код. Вы были предупреждены!)