一个可重用的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
联系
Twitter: @bradjasper
电子邮件: contact@bradjasper.com
更改
请参阅更改日志。
项目详情
jsonfield-joinup-2.1.2.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 0cf31ead8d149c1833b54865264bfe4edbc85912e0a8bcf1135e14f5dfb4b4f1 |
|
MD5 | b1ad61c30d50fde90cc263df4c940356 |
|
BLAKE2b-256 | 0722039f41203c9d5b4fea55049568a3b78f795247fe13ce70cdb3eed45cb4cc |