Skip to content

openwisp/django-flat-json-widget

Repository files navigation

django-flat-json-widget

CI build status Test Coverage Dependency monitoring Chat Pypi Version Downloads code style: black Django Flat JSON (key/value) Widget

If you ever needed to store a flexible dictionary of keys and values in your django models, you may have felt the need of giving your users a widget to easily manipulate the data by adding or removing rows, instead of having to edit the raw JSON.

This package solves exactly that problem: it offers a widget to manipulate a flat JSON object made of simple keys and values.

Compatibility

Tested on python >= 3.8 and Django 3.2, 4.1 and 4.2.

It should work also on previous versions of Django.

Install stable version from pypi

Install from pypi:

pip install django-flat-json-widget

Usage

Add flat_json_widget to INSTALLED_APPS:

INSTALLED_APPS = [
    # other apps...
    "flat_json_widget",
]

Then load the widget where you need it, for example, here's how to use it in the django admin site:

from django.contrib import admin
from django import forms
from .models import JsonDocument

from flat_json_widget.widgets import FlatJsonWidget


class JsonDocumentForm(forms.ModelForm):
    class Meta:
        widgets = {"content": FlatJsonWidget}


@admin.register(JsonDocument)
class JsonDocumentAdmin(admin.ModelAdmin):
    list_display = ["name"]
    form = JsonDocumentForm

Installing for development

Install your forked repo:

git clone git://github.com/<your_fork>/django-flat-json-widget
cd django-flat-json-widget/
python setup.py develop

Install development dependencies:

pip install -e .[test]
npm install -g jslint jshint stylelint

Create database:

cd tests/
./manage.py migrate
./manage.py createsuperuser

Launch development server:

./manage.py runserver 0.0.0.0:8000

You can access the admin interface at http://127.0.0.1:8000/admin/.

Run tests with:

./runtests.py

Run quality assurance tests with:

./run-qa-checks

Contributing

Please refer to the OpenWISP contributing guidelines.

Changelog

See CHANGES.

License

See LICENSE.

Support

See OpenWISP Support Channels.