- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在某些Django模型中使用JSONField,并希望将此数据从Oracle迁移到Postgres。
到目前为止,当使用Django的dumpdata和loaddata命令时,我仍然没有运气来保持JSON数据的完整性,而是将数据转换为JSON的字符串表示形式。我还没有找到一个很好的解决方案...想法?
最佳答案
最后,通过在名为custom_json_serializer.py的自定义序列化程序文件中覆盖Django随附的JSON序列化程序(特别是handle_field方法)来解决了该问题。通过这样做,我可以确保特定的JSONFields保持原样,而不会转换为字符串。
如果有其他人遇到这个问题,这些就是我所采取的步骤。我必须将此自定义序列化器添加到settings.py文件中:
SERIALIZATION_MODULES = {
'custom_json': 'myapp.utils.custom_json_serializer',
}
python manage.py dumpdata mymodel --format=custom_json --indent=2 --traceback > mymodel_data.json
from django.core.serializers.json import Serializer as JSONSerializer
from django.utils.encoding import is_protected_type
# JSONFields that are normally incorrectly serialized as strings
json_fields = ['problem_field1', 'problem_field2']
class Serializer(JSONSerializer):
"""
A fix on JSONSerializer in order to prevent stringifying JSONField data.
"""
def handle_field(self, obj, field):
value = field._get_val_from_obj(obj)
# Protected types (i.e., primitives like None, numbers, dates,
# and Decimals) are passed through as is. All other values are
# converted to string first.
if is_protected_type(value) or field.name in json_fields:
self._current[field.name] = value
else:
self._current[field.name] = field.value_to_string(obj)
关于Django JSONField转储/加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6022084/
问题 设置 JSONField 的最佳方法是什么?在 django 中拥有新列表的默认值? 上下文 有一个模型,其中一个字段是项目列表。在没有项目集的情况下,模型应该有一个空列表。 当前解决方案 fr
我有一个使用 bradjasper 的 django-jsonfield 的 Postgres 9.4/Django 1.8 数据库包裹。 (参见 https://github.com/bradjas
我想过滤一个 JSONField my_field,其中 JSON 不为空。在文档中有 has_key 和 has_any_key 方法,但我事先不知道可能的 key 。在 SQL 中它应该是这样的:
我的课是这样的: class Foo(models.Model): known_by = JSONField() 我的数据看起来像这样 { "known_by" : [
class Blog: values = JSONField(blank=True, default=list) [ { "id": 1, "value": "31" }
我在 Django 的模型上有一个 JSONField,称为 metadata。 该字段中的数据可能看起来像这样 { "vis": { "plots": [
我有一个 jsonfield foo = JSONField(default=list) 我想过滤查询集,以便 foo 有一些数据(不是空列表) 我试过了 MyModel.objects.filter
是否可以使用ILIKE(包含)运算符在词典列表中搜索一个键值?我的json字段看起来像这样: object = MyModel() object.json_data = [ {
使用 JSONField 时,内容会在读取值时自动从 JSON 解码为 python 对象。我有一个用例,我将字符串编码回 JSON 以嵌入到模板中。有什么方法可以从对象中获取原始 JSON 字符串吗
我们一直在使用来自 jsonfield 的 JSONField图书馆一段时间,但现在我们想使用 native PostgreSQL JSONField .所以我想知道是否可以更改现有模型的字段类型,保
我有这个模型: class InventoryItem(models.Model): size_range = JSONField(null=True) # JSONField in Dja
我从 Django 的文档中获取了以下示例,除了替换添加了一个键 '99': >>> Dog.objects.create(name='Rufus', data={ ... 'breed': 'lab
在我的应用程序中,有一个模型将配置存储在其字段之一中。该字段定义为 JSONField。我有一个严格的结构来定义该字段的内容应该是什么样子,但我正在努力寻找一种方法来序列化它以验证 API 请求中的数
我已经搜索了几天,试图找到一种 DRY 方法,使用 django 的内置验证和表单呈现从 JsonField 创建动态表单。我还没有找到一个包含 django 验证和渲染的解决方案,所以我想为此创建一
我通过使用 JSONField 在 mysql 中创建了一个 TextField (django) 类型的表。这就是我的模型的样子 from django.db import models from
我的模型中有一个 Json 字段 - class Product(models.Model): ... detailed_stock = JSONField(loa
这是模型: class ModelA(models.Model): field1 = models.CharField(max_length=100) field2 = models.
我正在尝试使用 Django + MySQL 为我的模型实现自定义 JSON 字段。这就是我的 models.py 的样子: from __future__ import unicode_litera
数据库是postgres 9.4在我的表中,我使用的是 JSONField class Item(models.Model): item = models.CharField(max_leng
对于经验丰富的 (Django) 开发人员来说,这可能是一个简单的问题。 我的项目的数据库是PostgreSQL。 我打算使用单个 protected 模型实例作为某些数据的集中存储。该实例将有一个
我是一名优秀的程序员,十分优秀!