Django操作错误:无此列:

2024-06-26 14:44:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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: no such column [added element]

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

django.db.utils.OperationalError: no such column: companies_company.founder


Tags: djangonofrompytruedbmodelscolumn
3条回答

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

当运行makemigrations时,在某些其他文件(例如forms.pyviews.py中的model字段上执行某些操作,而不是models.py)时,会发生此类问题。如果您仔细阅读回溯,您可以找出问题是从哪个文件引起的。

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

如果是,则可以删除以前添加的注释。

在控制台中运行以下命令:

manage.py makemigrations app_name
manage.py migrate app_name

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

相关问题 更多 >