django格式错误的数组文字:

时间:2019-03-07 11:13:24

标签: python django postgresql django-jsonfield

我有一个小问题:

我有这个模型:

class myModel(models.Model):
    myField =JSONField()

我要更新此字段:

data={'rda': {'punti': 0, 'rank': 1, 'pos': 'eq'}}
a =myModel()
a.myField=data
a.save()

但是我有这个错误:

  

回溯(最近通话最近):文件   “ /home/hy0/.conda/envs/ciclods_env/lib/python3.7/site-packages/django/db/backends/utils.py”,   _execute中的第85行       返回self.cursor.execute(sql,params)psycopg2.DataError:格式不正确的数组文字:“ {” rda“:{” punti“:0,” rank“:1,” pos“:   “ eq”}}“

我该如何解决?

3 个答案:

答案 0 :(得分:0)

您必须使用PostgreSQL。 到目前为止,我已经尝试过了,对我有用

data = {  
    'rda':{  
        'punti':0,
        'rank':1,
        'pos':'eq'
    }
}

test = myModel()
test.myField=data
test.save()

答案 1 :(得分:0)

您需要一个myModel实例才能存储它。例如。像这样:

myModel.objects.create(myField={'rda': {'punti': 0, 'rank': 1, 'pos': 'eq'}})

我怀疑其中还有一些不明显的额外代码,datadict,但是您在上面调用save,通常会引发AttributeError。另外,我猜测您的原始代码myModel不是myModel的实例,而是模型本身,因此您不能直接对其进行操作,您需要一个代表数据库的实例行。

拥有myModel的实例后,您可以执行以下操作:

a_model = myModel()
a_model.myField = {'rda': {'punti': 0, 'rank': 1, 'pos': 'eq'}}
a_model.save()

也要在我的答案中明确指出这一点,您需要确保数据库字段与模型中声明的字段匹配,检查是否已生成迁移并将其应用于所有最新更改。

答案 2 :(得分:0)

我遇到了这个确切的问题,这篇文章是我能找到的唯一参考。我不确定是什么原因,但最终我通过删除新数据库的迁移脚本来解决了该问题。

如果遇到此错误,请尝试删除最后几个迁移脚本,直到找到罪魁祸首。或者,您可以像我一样重新开始,它应该可以重新工作。