簡體   English   中英

Django 序列化自定義的 dumpdata-loaddata 錯誤 class:'“F”附近的語法錯誤'

[英]Django dumpdata-loaddata error serializing custom class: ' Syntax error near "F" '

我正在嘗試使用 Django 提供的dumpdata命令從我的數據庫創建一組固定裝置。我希望能夠使用loaddata命令加載這些固定裝置。

我試圖轉儲的模型之一有一個自定義字段:特別是,我面臨的問題是從 django.HStoreField 繼承的字段(MyHStoreField 類型)。 Django 無法序列化 MyHStoreField。

django.db.utils.InternalError: Problem installing fixture '/fixture_files/fixture.json':
   Could not load MyModel: Syntax error near "F" at position 12
LINE 1: ...a_model_field" = '0.0000000000000000', "my_hstore_field" = '{"blabla...

從 Django 文檔中,我認為這個 class 需要序列化的是自定義 JSONEncoder ( https://docs.djangoproject.com/en/2.2/topics/serialization/#json-1 )。 但是,我不知道如何告訴dumpdataloaddata使用這個編碼器。

django 是否使用任何類型的注冊表來了解哪些編碼器可用,或者我是否需要以某種方式覆蓋loaddatadumpdata命令?

我發現問題出在序列化 object 上,因為文件中的格式錯誤:

"my_hstore_field": "{\"blabla\": false}"

這不是一個有效的 json 而是一個 json 格式的字符串,Django 不知道如何反序列化。

解決方案是在運行 dumpdata 后使用腳本對文件進行后處理,並將該字段保存為有效 json:

"my_hstore_field": {"blabla": false}

暫無
暫無

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

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