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 迁移命令输入”
Django 中 python manage.py makemigrations 与 python manage.py migrate