跳转到主要内容

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

项目描述

https://circleci.com/gh/rpkilby/jsonfield2.svg?style=shield https://codecov.io/gh/rpkilby/jsonfield2/branch/master/graph/badge.svg https://img.shields.io/pypi/v/jsonfield2.svg https://img.shields.io/pypi/l/jsonfield2.svg

存档通知: 此包已被弃用并合并回 jsonfield


jsonfield2 是一个可重用的模型字段,允许您存储经过验证的JSON,并自动处理数据库的序列化和反序列化。要使用它,请将 jsonfield.JSONField 添加到您的模型之一。

注意: django.contrib.postgres 现在支持PostgreSQL的jsonb类型,该类型包括扩展的查询功能。如果您是PostgreSQL的终端用户并希望使用完整的JSON支持,则建议您使用内置的JSONField。但是,当您的应用程序需要数据库无关性时,或者当内置JSONField的扩展查询功能没有被利用时(例如配置字段),jsonfield2仍然很有用。

要求

jsonfield2旨在支持所有当前Django版本,但是明确测试的版本是

  • Python 3.6, 3.7, 3.8

  • Django 2.2, 3.0

安装

pip install jsonfield2

用法

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

继承自 models.CharField 而不是 models.TextField

运行测试

测试套件需要 toxtox-venv

$ pip install tox tox-venv

要测试所有支持的 Django 版本,请安装并运行 tox

$ tox

或者,仅测试一个版本(例如 Python 3.6 上的 Django 2.0)

$ tox -e py36-django20

发布流程

  • 更新变更日志

  • 在 setup.py 中更新包版本

  • 检查 setup.py 和 readme 中的支持版本

  • 为版本创建 git 标签

  • 将发布版本上传到 PyPI 测试服务器

  • 将发布版本上传到官方 PyPI 服务器

$ pip install -U pip setuptools wheel twine
$ rm -rf dist/ build/
$ python setup.py sdist bdist_wheel
$ twine upload -r test dist/*
$ twine upload dist/*

变更

查看 变更日志

项目详情


下载文件

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

源分布

jsonfield2-4.0.0.post0.tar.gz (12.6 kB 查看散列)

上传日期

构建分布

jsonfield2-4.0.0.post0-py3-none-any.whl (7.4 kB 查看散列)

上传日期 Python 3

支持者: