【问题标题】:Django: Cannot resolve keyword ''hidden_from_cus" into field. Choices areDjango:无法将关键字“hidden_​​from_cus”解析为字段。选择是
【发布时间】:2016-05-10 09:53:52
【问题描述】:

我有以下型号:

class Task(models.Model)
    customer = models.ForeignKey('Customer')
    external_job = models.CharField(max_length=64)
    created = models.DateTimeField(auto_now_add=True, db_index=True)
    start = models.DateTimeField(db_index=True)
    status = models.IntegerField()

我添加了一列 hidden_​​from_customer 为:

hidden_from_customer = models.BooleanField(default=True)

并运行了同步数据库。该列现在反映在数据库中,默认值为 True。但是当我运行以下查询时:

tasks = Task.objects.filter(status=1, hidden_from_customer=True)

我得到异常说:

Cannot resolve keyword "hidden_from_customer" into field. Choices are customer, external_job, created, start, status.

我不知道这是怎么回事!

【问题讨论】:

  • 你使用的是哪个版本的 django?
  • 我很确定 FieldError 是模型中字段的异常,而不是数据库查询本身。换句话说,并不是该表在数据库中不存在,因为它永远不会走那么远。您确定在添加字段后重新加载了模型吗?
  • 谢谢大家,但这是模型定义中的错误。请查看我发布的解决方案。

标签: python django


【解决方案1】:

我有解决办法。在数据库中,我看到模型中没有定义一个额外的列“end”。这就是我认为 Django 没有关注新专栏的原因。我在模型中添加了“结束”,现在一切正常。

奇怪的是,在我添加这个新专栏之前,一切都运行良好。

【讨论】:

  • 除非您可以通过添加/删除所述列并重新加载模型来准确复制问题,否则我会对此保持警惕。在我所有的 Django 经验中,Django 从不关心数据库中存在的未在模型中定义的列,并且由于额外的列而不会出现错误消息。
猜你喜欢
  • 2014-04-15
  • 2017-11-08
  • 1970-01-01
  • 2021-09-17
  • 1970-01-01
  • 2021-11-18
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多