【问题标题】:Django error: Value too long for type character varying(2)Django 错误:类型字符变化的值太长(2)
【发布时间】:2019-04-06 09:06:56
【问题描述】:

我进行了数据库刷新以重置我的数据库。当我尝试执行以下代码时出现此错误。

引发错误的代码:

    try:
        print("Attempting to load %s" % store.get('name'))
        # THIS NEXT LINE THROWS ERROR
        store_obj = Store.objects.get(name=store.get('name'))
    except Store.DoesNotExist:
        store_obj = Store(name=store.get('name'),
                          last_updated=last_updated,
                          address=store.get('address'),
                          city=store.get('city'),
                          state=store.get('state'),
                          zip_code=store.get('zip_code'))

错误:

Exception Type: DataError at /stores/
Exception Value: value too long for type character varying(2)

\d 中的stores_store

django 中的模型:

class Store(models.Model):

    name = models.CharField(max_length=200)
    description = models.TextField()
    created_at = models.DateTimeField(default=datetime.now, blank=True)
    last_updated = models.DateTimeField(default=datetime.now, blank=True)

    # Address
    address = models.CharField(_("address"), max_length=128)
    city = models.CharField(_("city"), max_length=128)
    state = USStateField(_("state"))
    zip_code = USZipCodeField(_("zip code"), max_length=5)

    def __str__(self):
        return self.name

如您所见,商店名称是 200 的 VARCHAR,而不是 2。但是,如果没有收到此错误,我无法完成此获取操作。我尝试了另一个冲洗和makemigrations -> migrate,但仍然没有运气。我还能尝试什么?

谢谢!

【问题讨论】:

  • 错误字段可能是表的状态字段
  • 将完整的回溯添加到问题中。

标签: django postgresql


【解决方案1】:

“状态”列有 USStateField(_(“state”)),我认为它是可变的 (2),您是否要添加一个状态大于可变 (2) 的元组?

我可以建议您将 USStateField(_("state")) 更改为 CharField 或放置一个 max_length。

如果这不起作用,您可以尝试删除迁移历史记录以重新创建它们。在迁移的app文件夹中删除所有看起来像0001_initial.py的文件,不要删除迁移文件夹中的init.py,希望对您有帮助:D

【讨论】:

  • 我不小心删除了init.py,有什么办法可以恢复吗?
  • 如果您没有在 init.py 上手动编写任何内容,只需创建一个名为 init.py 的新文件。自然他们什么都没有,但有他们很好。
猜你喜欢
  • 2019-12-18
  • 2016-05-25
  • 2015-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
  • 2012-02-04
  • 2015-06-29
相关资源
最近更新 更多