跳转到主要内容

一个可重用的Django字段,允许你在模型中存储经过验证的JSON。

项目描述

django-jsonfield

django-jsonfield是一个可重用的Django字段,允许你在模型中存储经过验证的JSON。

它会静默处理序列化。使用时,只需将字段添加到你的模型之一即可。

支持Python 3和Django 1.11至3.0!

使用PostgreSQL? 1.0.0版本引入了对底层数据类型的一个破坏性变更,所以如果你使用的是< 1.0.0,请在升级之前阅读https://github.com/dmkoch/django-jsonfield/issues/57。此外,可以考虑切换到Django 1.9中添加的Django原生JSONField。

注意:存在一些用于Django的第三方附加JSONField。本项目位于GitHub上的django-jsonfield,但在PyPI上命名为jsonfield。还有一个位于Bitbucket上的django-jsonfield,但在PyPI上的名称为django-jsonfield。我意识到这种命名冲突很令人困惑,并且我愿意合并这两个项目。

注意:从版本1.9开始,Django在django.contrib.postgres.fields.JSONField中添加了对原生PostgreSQL JSON的支持。如果您需要支持除PostgreSQL之外的其他数据库或正在创建一个需要数据库无关性的第三方模块,此模块仍然很有用。但如果你是使用PostgreSQL的最终用户并希望使用全面功能的JSON支持,我建议使用Django的内置JSONField而不是此模块。

注意:在1.0版本发布后遵循Semver。

安装

pip install jsonfield

使用

from django.db import models
from jsonfield import JSONField

class MyModel(models.Model):
  json = JSONField()

高级使用

默认情况下,python将json反序列化为dict对象。这种行为与标准json行为不同,因为python字典没有有序键。

为了克服这一限制并保持OrderedDict键的排序顺序,可以在模型初始化时调整反序列化。

import collections
class MyModel(models.Model):
  json = JSONField(load_kwargs={'object_pairs_hook': collections.OrderedDict})

其他字段

jsonfield.JSONCharField

如果您需要在索引或其他约束中使用JSON字段,可以使用继承自CharField而不是TextField的JSONCharField。如果您使用此字段,还需要指定一个max_length参数。

兼容性

django-jsonfield旨在支持Django主项目目前维护的相同版本。请参阅Django支持的版本,目前包括:

  • Django 1.11 (LTS) 与Python 2.7, 3.5或3.6

  • Django 2.2 (LTS) 与Python 3.6, 3.7或3.8

  • Django 3.0 与Python 3.6, 3.7或3.8

在本地测试django-jsonfield

测试所有支持的Django版本

$ docker-compose build && docker-compose up

或仅测试一个版本(例如,Django 3.0在Python 3.8上)

$ docker-compose build && docker-compose run tox tox -e py38-dj30

Travis CI

https://travis-ci.org/dmkoch/django-jsonfield.svg?branch=master

联系

网站: http://bradjasper.com

Twitter: @bradjasper

电子邮件: contact@bradjasper.com

更改

请参阅更改日志

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。

源代码分发

jsonfield-joinup-2.1.2.tar.gz (8.2 kB 查看散列)

上传时间 源代码

支持者