使用以下命令编辑数据库表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基数所提到的)
(对于Django>;=1.7)更新django_migrations表以避免重新运行以前的迁移:UPDATE django_migrations SET app='<NewAppName>' WHERE app='<OldAppName>'。注意:如果Django 1.8+需要此步骤,则存在一些争论(在注释中);如果有人确定知道,请在此处更新。
要重命名django models,需要更改DB中的django_content_type.name项。对于postgreSQL使用UPDATE django_content_type SET name='<newModelName>' where name='<oldModelName>' AND app_label='<OldAppName>'
Meta point(如果使用virtualenv):值得注意的是,如果要重命名包含virtualenv的目录,则env中可能有多个文件包含绝对路径,还需要更新。如果您遇到诸如ImportError: No module named ...之类的错误,这可能是罪魁祸首。(感谢@danyamachine提供了这个)。
Django 1.7中的新功能是一个应用程序注册表,它存储配置并提供内省。这个机器让你改变几个应用程序属性。
我想强调的一点是,重命名应用并不总是必要的:通过应用配置,可以解决冲突的应用。但如果你的应用程序需要友好的命名,也是一条路要走。
举个例子,我想把我的投票应用命名为“来自用户的反馈”。事情是这样的:
在
polls
目录中创建apps.py
文件:将默认应用程序配置添加到您的
polls/__init__.py
:有关更多应用程序配置:https://docs.djangoproject.com/en/1.7/ref/applications/
按照以下步骤在Django中更改应用程序的名称:
views.py
、urls.py
、^{django_content_type
:UPDATE django_content_type SET app_label='<NewAppName>' WHERE app_label='<OldAppName>'
ALTER TABLE <oldAppName>_modelName RENAME TO <newAppName>_modelName
。对于mysql,我也认为它是相同的(正如@null基数所提到的)django_migrations
表以避免重新运行以前的迁移:UPDATE django_migrations SET app='<NewAppName>' WHERE app='<OldAppName>'
。注意:如果Django 1.8+需要此步骤,则存在一些争论(在注释中);如果有人确定知道,请在此处更新。models.py
的元类已列出app_name
,请确保也重命名该类(由@will提到)。static
或templates
文件夹,你还需要重命名它们。例如,将old_app/static/old_app
重命名为new_app/static/new_app
。models
,需要更改DB中的django_content_type.name
项。对于postgreSQL使用UPDATE django_content_type SET name='<newModelName>' where name='<oldModelName>' AND app_label='<OldAppName>'
Meta point(如果使用virtualenv):值得注意的是,如果要重命名包含virtualenv的目录,则env中可能有多个文件包含绝对路径,还需要更新。如果您遇到诸如
ImportError: No module named ...
之类的错误,这可能是罪魁祸首。(感谢@danyamachine提供了这个)。其他参考资料:您可能还需要参考以下链接以获得更完整的图片
如果您正在使用PyCharm,并且项目在重命名后停止工作:
相关问题 更多 >
编程相关推荐