Django DatabaseError:没有这样的列错误

Django DatabaseError:没有这样的列错误,django,django-models,Django,Django Models,所以我有一个模型,我想把ImageField添加到其中,所以我输入了 picture=models.ImageField(上传到class='media/images') 然后我运行syncdb并进入shell: python2 manage.py syncdb python2 manage.py shell 然后我导入了模型并进行了尝试 "model".objects.get(pk=1) 我得到一个错误: DatabaseError: no such column: people_peop

所以我有一个模型,我想把ImageField添加到其中,所以我输入了 picture=models.ImageField(上传到class='media/images')

然后我运行syncdb并进入shell:

python2 manage.py syncdb
python2 manage.py shell
然后我导入了模型并进行了尝试

"model".objects.get(pk=1)
我得到一个错误:

DatabaseError: no such column: people_people.picture
当我为模型运行manage.py sql时

"picture" varchar(100) NOT NULL
在数据库中

你们有什么解决办法?我无法删除数据库中的数据。

syncdb
中所述,它不向现有表添加列,只创建新表

我建议跑步

python manage.py sqlall <your_app>
以手动发出
ALTER TABLE
命令


将来,您可能会使用迁移工具,如。

有两种可能会出现此错误:1)在执行syncdb之后,您向模型添加了额外的字段。2) 您向django中的model.py文件添加了新类

解决办法是:

首先使用命令安装south

for windows: **easy_install south**     //for that you need to go to the script folder of python folder in c drive.

for linux: **sudo easy_install south**  
然后按照迁移教程中包含的步骤进行操作

步骤1-python manage.py模式迁移您的应用程序名称--首字母

步骤2 python manage.py迁移您的应用程序名称 希望这将对您有所帮助。

从1.7开始

通过在终端中运行以下命令,创建一组新的迁移指令:

$ python manage.py makemigrations
检查它创建的迁移文件夹中的输出,确保它们有意义,然后运行以下终端命令以完成迁移:

$ python manage.py migrate
就这样

以这种方式运行迁移允许其他人实现相同的迁移,而不必使用代码在每台机器上手动实现db更改。在新机器上,他们只需运行:

$ python manage.py migrate

我很乐意扩展这个答案,向您展示如何使用迁移来实现既定目标。
$ python manage.py migrate