Django错误:值太长,无法改变类型字符(2)

时间:2018-11-02 05:38:25

标签: django postgresql

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

引发错误的代码:

    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 of stores_store

enter image description here

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

我建议您将USStateField(_(“ state”))更改为CharField或放置max_length。

如果这不起作用,则可以尝试删除迁移历史记录以再次进行迁移。在迁移过程中的app文件夹内,删除所有看起来像0001_initial.py的文件,不要删除migrations文件夹内的 init .py,希望它对您有帮助:D