Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更新Django应用程序中的字段时出现问题_Python_Sql_Django - Fatal编程技术网

Python 更新Django应用程序中的字段时出现问题

Python 更新Django应用程序中的字段时出现问题,python,sql,django,Python,Sql,Django,我正在尝试用Django创建一个新网站。然而,我才刚刚开始网络开发,对很多零碎的东西都是陌生的,比如SQL 我用不同的字段定义了一个模型,然后在Django shell中创建了一个实例。后来,我更改了一些字段的名称,现在当我尝试使用我的模型(如Post.objects.all())进行操作时,会出现以下错误: DatabaseError: no such column: posts_post.body 我如何更新我的数据库条目(或只是删除它们),这样我就可以进入我的网站 谢谢自从将该字段添加到

我正在尝试用Django创建一个新网站。然而,我才刚刚开始网络开发,对很多零碎的东西都是陌生的,比如SQL

我用不同的字段定义了一个模型,然后在Django shell中创建了一个实例。后来,我更改了一些字段的名称,现在当我尝试使用我的模型(如Post.objects.all())进行操作时,会出现以下错误:

DatabaseError: no such column: posts_post.body
我如何更新我的数据库条目(或只是删除它们),这样我就可以进入我的网站


谢谢

自从将该字段添加到您的模型后,您几乎肯定没有运行过
manage.py syncdb

如果运行syncdb,然后将该字段添加到模型中,则需要删除该表,然后使用syncdb重新启动


或者,安装South,因为它可以为您进行这种模式升级。

自从将该字段添加到您的模型后,您几乎肯定没有运行过
manage.py syncdb

如果运行syncdb,然后将该字段添加到模型中,则需要删除该表,然后使用syncdb重新启动


或者,安装South,因为它可以为您进行这种模式升级。

您将名为“body”的新属性添加到应用程序“posts”的模型“Post”中。Django无法自动为此新字段创建数据库列(它只能为新模型创建数据库表)。因此,您需要手动创建所有新字段。在数据库中更改您的表:

ALTER TABLE `posts_post` ADD COLUMN `body` Text; 

您将名为“body”的新属性添加到应用程序“posts”的模型“Post”中。Django无法自动为此新字段创建数据库列(它只能为新模型创建数据库表)。因此,您需要手动创建所有新字段。在数据库中更改您的表:

ALTER TABLE `posts_post` ADD COLUMN `body` Text; 

解决方案有一个名字,我使用南方为我所有的django网站!在你习惯了它之后,它真的很有用,也很容易使用!试试看

使用south迁移该表时,需要运行2个命令:

首先,要创建迁移脚本,请执行以下操作:

python manage.py schemamigration posts --auto
实际应用表格更改的售后服务:

python manage.py migrate posts

解决方案有一个名字,我使用南方为我所有的django网站!在你习惯了它之后,它真的很有用,也很容易使用!试试看

使用south迁移该表时,需要运行2个命令:

首先,要创建迁移脚本,请执行以下操作:

python manage.py schemamigration posts --auto
实际应用表格更改的售后服务:

python manage.py migrate posts

manage.py syncdb不处理现有模型,尽管它为 新型号。为此,你可以使用 安装south run后 python manage.py schemamigration myapp--auto(适用于现有模型) 或 python manage.py schemamigration myapp--initial(对于新模型) 然后 python manage.py迁移myapp

使用South后,您将无法运行manage.py syncdb来创建模型 south创建了一个目录,其中存储迁移文件


下次安装应用程序时,您必须运行python manage.py migrate,以便为数据库中的模型创建表

manage.py syncdb不处理现有模型,尽管它为 新型号。为此,你可以使用 安装south run后 python manage.py schemamigration myapp--auto(适用于现有模型) 或 python manage.py schemamigration myapp--initial(对于新模型) 然后 python manage.py迁移myapp

使用South后,您将无法运行manage.py syncdb来创建模型 south创建了一个目录,其中存储迁移文件


下次安装应用程序时,必须运行python manage.py migrate来生成数据库中模型的表

我确实运行了syncdb。我认为问题不在于我添加了一个新字段,而是我更改了某些字段的名称,例如“body”过去是“comment”。我确实运行了syncdb。我认为问题不在于我添加了一个新字段,而是我更改了某些字段的名称,例如“body”过去是“comment”。我在哪里运行这些命令?我猜不是在pythonshell中?当然不是在pythonshell中,您使用什么数据库?sqlite或mysql?(如果您刚刚重命名了字段,那么查询必须是“ALTER TABLE'posts\u post'CHANGE COLUMN
comment
body
Text;”)我正在使用sqlite。合适的网站如何绕过这类事情?他们必须不时地重命名变量等?几乎可以肯定,这是开发中的错误方法,在生产中是危险的。在dev中,清除数据库并再次运行syncdb,或者使用South。在生产中,使用SouthforSQLite我使用firefox插件“sqlite管理器”()。您只需将其添加到浏览器中,从浏览器菜单启动,选择数据库(standart file dialog),然后您将看到所有的表,并能够执行SQL查询。但是无论如何,你应该读一点关于SQLSQL的知识,我在哪里运行这些命令呢?我猜不是在pythonshell中?当然不是在pythonshell中,您使用什么数据库?sqlite或mysql?(如果您刚刚重命名了字段,那么查询必须是“ALTER TABLE'posts\u post'CHANGE COLUMN
comment
body
Text;”)我正在使用sqlite。合适的网站如何绕过这类事情?他们必须不时地重命名变量等?几乎可以肯定,这是开发中的错误方法,在生产中是危险的。在dev中,清除数据库并再次运行syncdb,或者使用South。在生产中,使用SouthforSQLite我使用firefox插件“sqlite管理器”()。您只需将其添加到浏览器中,从浏览器菜单启动,选择数据库(standart file dialog),然后您将看到所有的表,并能够执行SQL查询。但无论如何,您应该读一点关于SQL的知识