【问题标题】:Add more fields in the model and get the error "column ... does not exist"在模型中添加更多字段并得到错误“列...不存在”
【发布时间】:2016-12-12 07:28:51
【问题描述】:

我有一个这样的模型:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    address = models.CharField(max_length=100)
    city= models.CharField(max_length=100)

,过了一会儿,我又添加了 2 个字段:

zip_code = models.CharField(max_length=20, blank=True, null=True) state = models.CharField(max_length=50, blank=True, null=True)

,那我做套路

python manage.py makemigrations
python manage.py migrate 

但是当我去网站/管理员并在 Django 管理中检查该模型时,我收到了错误 "column user_profile.zip_code does not exist"

我搜索了解决方案,一些线程建议使用 South,但后来我从 django >= 1.7 了解到,我们不需要使用 South 进行迁移。

请告诉我我哪里错了。

谢谢!

【问题讨论】:

    标签: django django-models django-database


    【解决方案1】:

    检查您在运行migrate 和服务器时使用相同的设置。

    【讨论】:

      【解决方案2】:

      如果您在已安装的应用程序中使用 django 调试工具栏。确保对此发表评论,这给出了问题。如果没有,您还可以检查您的模型是否被其他应用程序中的表单使用。如果他们最好将逻辑移动到视图中。

      【讨论】:

        【解决方案3】:

        我将调试工具栏注释掉了,但这并没有解决问题。

        我正在向用户模型添加一个字段。我有一个返回默认用户的实用程序。当我尝试迁移(添加新字段)时,该实用程序被调用并导致错误。

        对我有用的解决方案:在返回默认用户的实用程序中,临时注释掉对用户表的调用,并为默认用户返回 None。迁移然后成功运行。然后我当然恢复了实用程序中的代码。

        我发现是我的实用程序在终端中显示的一长串异常列表中从我的代码中找到了一行导致问题。

        【讨论】:

          猜你喜欢
          • 2018-06-25
          • 2016-07-22
          • 1970-01-01
          • 1970-01-01
          • 2017-01-10
          • 2021-10-07
          • 2011-06-07
          • 2015-08-12
          • 2013-03-30
          相关资源
          最近更新 更多