django - 如何使导入导出保存 JSONField 不作为字符串
问题描述
我正在尝试使用 django import-export 导入 JSONField,它一直将 JSON 保存为字符串(向其中添加“”)
models.py
from django.db import models
from django.contrib.postgres.fields import JSONField
class Governorate(models.Model):
name = models.CharField(max_length=500)
data = JSONField()
def __str__(self):
return ("%s" %(self.name))
admin.py
from django.contrib import admin
from .models import Governorate
from import_export.admin import ImportExportModelAdmin
from import_export import resources
class GovernorateResource(resources.ModelResource):
class Meta:
model = Governorate
class GovernorateAdmin(ImportExportModelAdmin):
list_display = ('id','name', 'data')
resources_class = GovernorateResource
admin.site.register(Governorate,GovernorateAdmin)
我希望输出是: {"xx":{"xx":"xx","xx":"xx"} 但是它将它保存为 "{"xx":{"xx":"xx"," xx":"xx"}"
尝试上传 XLSX 和 CSV。
解决方案
1.2.0 版的 import-export 不会自动识别JSONField
你的,Resource
所以它只是默认为一个CharField
类型。它已经添加到 master 分支但没有发布。
因此,只需覆盖该字段即可使用JSONWidget
1.2.0 版中已提供的字段:
from import_export import fields, widgets
class GovernorateResource(resources.ModelResource):
data = fields.Field(widget=widgets.JSONWidget())
class Meta:
model = Governorate
推荐阅读
- image - how can i find which color channel (RGB) is affected most in a noisy medium?
- homebrew - How to list all keg only formulas installed?
- discord.js - 如何在 discord.js 嵌入中 ping 角色
- javascript - Install vue-cli Globally or Locally
- sql - Why adding a new DateTime filter in a Where clausule involves bad performance?
- php - PHP7 cron architecture for MySQL
- postgresql - 如何使用 UPDATE 触发器在同一个表中删除/插入行?
- android - Skipping failed external commands before running app in Android Studio's run config
- javascript - 在 ReactJS 的表格行中显示数组数据
- python - GCP cloud functions with "gcloud functions deploy" fails with --source as file rather than directory