我有一个小问题:
我有这个模型:
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”}}“
我该如何解决?
答案 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'}})
我怀疑其中还有一些不明显的额外代码,data
是dict
,但是您在上面调用save
,通常会引发AttributeError
。另外,我猜测您的原始代码myModel
不是myModel
的实例,而是模型本身,因此您不能直接对其进行操作,您需要一个代表数据库的实例行。
拥有myModel
的实例后,您可以执行以下操作:
a_model = myModel()
a_model.myField = {'rda': {'punti': 0, 'rank': 1, 'pos': 'eq'}}
a_model.save()
也要在我的答案中明确指出这一点,您需要确保数据库字段与模型中声明的字段匹配,检查是否已生成迁移并将其应用于所有最新更改。
答案 2 :(得分:0)
我遇到了这个确切的问题,这篇文章是我能找到的唯一参考。我不确定是什么原因,但最终我通过删除新数据库的迁移脚本来解决了该问题。
如果遇到此错误,请尝试删除最后几个迁移脚本,直到找到罪魁祸首。或者,您可以像我一样重新开始,它应该可以重新工作。