python manage.py shell 不再打开:NameError: name 'Posts' is not defined

Posted

技术标签:

【中文标题】python manage.py shell 不再打开:NameError: name \'Posts\' is not defined【英文标题】:python manage.py shell won't open anymore: NameError: name 'Posts' is not definedpython manage.py shell 不再打开:NameError: name 'Posts' is not defined 【发布时间】:2014-03-22 23:26:21 【问题描述】:

Django shell 中的奇怪问题,使用 Python。

我的models.py 文件中有一个名为Posts 的课程。我认为Post 的名称更好,所以我更改了文件中的名称,并尝试了

python manage.py syncdb

要同步更改,但出现错误:NameError: name 'Posts' is not defined

然后我尝试使用 python manage.py shell 启动 shell,但遇到了同样的错误。

我回到models.py 文件并将类的名称改回Posts。我尝试再次运行 shell,这一次成功了。

所以我的问题并不是如何解决这个错误,因为我现在已经知道了。但是我现在的问题是如何更改模型中的类的名称?

【问题讨论】:

【参考方案1】:

您可以随时更改类的名称,只要您在所有引用该类的地方进行更新。

您可能需要设置元选项db_table 以确保安装继续引用正确的表。

另一方面,通常首选模型类的单数名称(因此“Post”优于“Posts”)。

【讨论】:

【参考方案2】:

目前推荐的方式是使用Django South。对模型的任何更改都需要对数据库进行相应的架构更改。这并不容易执行,尤其是在不丢失数据的情况下。 South 强烈推荐用于所有 django 开发。事实上,它的功能计划被合并到下一个版本的 Django 中。

【讨论】:

以上是关于python manage.py shell 不再打开:NameError: name 'Posts' is not defined的主要内容,如果未能解决你的问题,请参考以下文章

用于 Django 应用程序的 Python 脚本,无需使用 manage.py shell 即可访问模型

从 Django 1.6 升级到 1.9:python manage.py migrate 失败

使用 manage.py shell 更改 Django 站点显示名称?

python 无法打开文件'manage.py'-“heroku 运行 python manage.py 迁移命令输入”

python27+django1.9添加api

Django 中 python manage.py makemigrations 与 python manage.py migrate