[英]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 )。 但是,我不知道如何告訴dumpdata
和loaddata
使用這個編碼器。
django 是否使用任何類型的注冊表來了解哪些編碼器可用,或者我是否需要以某種方式覆蓋loaddata
和dumpdata
命令?
我發現問題出在序列化 object 上,因為文件中的格式錯誤:
"my_hstore_field": "{\"blabla\": false}"
這不是一個有效的 json 而是一個 json 格式的字符串,Django 不知道如何反序列化。
解決方案是在運行 dumpdata 后使用腳本對文件進行后處理,並將該字段保存為有效 json:
"my_hstore_field": {"blabla": false}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.