簡體   English   中英

django 格式錯誤的數組文字:

[英]django malformed array literal:

我有一個小問題:

我有這個模型:

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”,第 85 行,在 _execute 中返回 self .cursor.execute(sql, params) psycopg2.DataError:格式錯誤的數組文字:“{”rda”:{“punti”:0,“rank”:1,“pos”:“eq”}}”

我該如何解決?

您必須需要使用 PostgreSQL。 我到目前為止嘗試過,它對我有用

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

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

您需要一個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()

只是為了在我的回答中明確這一點,您需要確保數據庫字段與模型中聲明的字段匹配,檢查您是否已生成遷移並將它們應用於所有最新更改。

我有這個確切的問題,這篇文章是我能找到的唯一參考。 我不確定原因是什么,但我最終通過刪除我的新數據庫的遷移腳本來修復它。

如果遇到此錯誤,請嘗試刪除最后幾個遷移腳本,直到找到罪魁禍首。 或者,您可以像我一樣重新開始,它應該會再次工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM