Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dldevinc/paper-jsoneditor
JSON input widget for paper-admin.
https://github.com/dldevinc/paper-jsoneditor
Last synced: about 1 month ago
JSON representation
JSON input widget for paper-admin.
- Host: GitHub
- URL: https://github.com/dldevinc/paper-jsoneditor
- Owner: dldevinc
- License: bsd-3-clause
- Created: 2022-11-15T18:48:34.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2023-09-10T09:57:34.000Z (over 1 year ago)
- Last Synced: 2024-11-16T01:50:02.688Z (about 2 months ago)
- Language: JavaScript
- Size: 224 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# paper-jsoneditor
JSON input widget for paper-admin.
[![PyPI](https://img.shields.io/pypi/v/paper-jsoneditor.svg)](https://pypi.org/project/paper-jsoneditor/)
[![Build Status](https://github.com/dldevinc/paper-jsoneditor/actions/workflows/tests.yml/badge.svg)](https://github.com/dldevinc/paper-jsoneditor)
[![Software license](https://img.shields.io/pypi/l/paper-jsoneditor.svg)](https://pypi.org/project/paper-jsoneditor/)## Compatibility
- `python` >= 3.6
- `django` >= 3.1
- `paper-admin` >= 6.0## Installation
Install the latest release with pip:
```shell
pip install paper-jsoneditor
```Add `paper_jsoneditor` to your INSTALLED_APPS in django's `settings.py`:
```python
INSTALLED_APPS = (
# other apps
"paper_jsoneditor",
)
```## Usage
```python
from django.db import models
from django.utils.translation import gettext_lazy as _
from paper_jsoneditor.fields import JSONFieldclass SampleModel(models.Model):
data = JSONField(_("JSON"))class Meta:
verbose_name = _("Sample")
```Result:
![image](https://user-images.githubusercontent.com/6928240/202204440-a1babd34-263f-45c8-8dd5-7ff9c05d8512.png)## Preserving JSON object keys order
By default, Django uses the `jsonb` internal type for `JSONField` (for PostgreSQL).
From the [Postgres documentation](https://www.postgresql.org/docs/15/datatype-json.html):
> <...> jsonb does not preserve white space, does not preserve the order
> of object keys, and does not keep duplicate object keys. If duplicate keys
> are specified in the input, only the last value is kept.
>
> In general, most applications should prefer to store JSON data as jsonb,
> unless there are quite specialized needs, such as legacy assumptions about
> ordering of object keys.If you really do need to preserve the key order, use `OrderedJSONField`.
It uses the `TEXT` type to store data:```python
from django.db import models
from django.utils.translation import gettext_lazy as _
from paper_jsoneditor.fields import OrderedJSONFieldclass SampleModel(models.Model):
data = OrderedJSONField(_("JSON"))class Meta:
verbose_name = _("Sample")
```