Django 1.8 OperationalError:没有这样的专栏:

时间:2015-08-05 20:23:45

标签: python django django-models

我使用的是django 1.8,我在添加到models.py时遇到了问题。目前它是:

from django.db import models


# Create your models here.
class Company(models.Model):
    role = models.CharField(max_length=32, blank=True)
    name = models.CharField(max_length=70, blank=True)

并且它工作得很好,但每当我尝试添加到此,然后运行服务器我得到

  

OperationalError:没有这样的列[添加元素]

例如,我添加了founder = models.CharField(max_length=200, blank=True),我运行了程序,我得到了

  

django.db.utils.OperationalError:没有这样的专栏:companies_company.founder

5 个答案:

答案 0 :(得分:3)

在您的控制台中运行此命令:

manage.py makemigrations app_name
manage.py migrate app_name

每次在应用程序中更改模型时,都应使用makemigration和migrate命令将更改迁移到数据库。向db表中添加新列时,必须将此列的值添加到所有现有行。您可以通过在模型的新字段中设置默认值来执行此操作。 或者在运行migrate命令时设置值(django会自动提出这个) 您可以在docs

中了解相关信息

答案 1 :(得分:0)

您必须使用python manage.py makemigrations重新同步数据库

答案 2 :(得分:0)

当您运行forms.py时,某些其他文件(例如views.pymodels.py而不是makemigrations的模型字段上有某些操作时会发生此类问题。如果你仔细阅读了追溯,你可以从问题所在的文件中找出它。

例如,如果回溯告诉您forms.py中可能碰巧使用某些模型字段的某些投诉,只需注释掉处理模型字段的代码并再次重新运行makemigrations 。希望它能解决问题。

如果是,则可以删除之前添加的评论。

答案 3 :(得分:0)

我发现先清除python3 manage.py sqlflush然后清除python3 manage.py flush的所有数据

然后进行makemigrations,sqlmigrate,然后进行迁移

它将删除SQL数据库中的所有数据,包括用户和对象

答案 4 :(得分:0)

可能不是最佳选择,但这样做对我很有用(默认设置无效):

  1. 删除迁移文件夹中 init .py以外的所有文件
  2. 删除db.sqlite文件
  3. 正在做:python manage.py runserver(没有以前的迁移,迁移不起作用,我认为它已链接到调用标签的视图/模板,因此必须先运行)
python manage.py migrate
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
python manage.py createsuperuser