【问题标题】:Django reading old model?Django阅读旧模型?
【发布时间】:2010-11-02 09:52:14
【问题描述】:

我更改了模型,同步了数据库,现在当我这样做时:

Prs = Products.objects.filter(PrName__icontains='bla')

我得到错误:

    ERROR:  column search_products.pr_name does not exist
LINE 1: SELECT "search_products"."id", "search_products"."pr_name", ...

但是 pr_name 是旧模型,这是新模型的样子:

class Products(models.Model):
  PrName = models.CharField(max_length=255)
  PrDescription = models.CharField(max_length=4000)
  PrPrice = models.DecimalField(max_digits=5, decimal_places=2)
  PrCompany =  models.ForeignKey(Companies)

  def __str__(self):
    return self.PrName

为什么会出现这个错误?我同步了 db 100 次,检查了所有代码,没有任何地方引用 pr_name?

【问题讨论】:

    标签: django models


    【解决方案1】:

    您是否尝试过重新启动服务器?如果您使用的不是开发服务器,您可能需要在进行此类更改后手动执行此操作。

    【讨论】:

    • Deus Harold,你是对的!我完全忘记了我没有使用开发服务器,每次更改后我都需要重新启动 apache!
    【解决方案2】:

    不幸的是,您尝试做的事情是 django 开箱即用的not supported :-(

    但您可以通过向字段添加 db_column 或通过导出数据、从数据库中删除表、编辑导出文件、重新创建数据库表并重新导入数据来实现。

    还可以查看各种 schema evolution 解决方案

    【讨论】:

    • 他的问题不是需要迁移的新字段,而是他的错误表明正在查询旧字段(模型中不再存在)而不是数据库中(即syncdb 正常工作)。
    • PrName 不会导致 pr_name 列吗?我认为我们需要看看旧模型。
    猜你喜欢
    • 1970-01-01
    • 2021-06-07
    • 2019-12-01
    • 2015-02-04
    • 2011-05-19
    • 2020-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-09-05
    相关资源
    最近更新 更多