A simple Django app to add JSON widget into Django Administration.
Project description
# Django Administration JSON Editor
[![Build Status](https://travis-ci.org/abogushov/django-admin-json-editor.svg?branch=master)](https://travis-ci.org/abogushov/django-admin-json-editor)
![Admin Json Editor](example/example.png)
Application adds support for editing JSONField in Django Administration via https://github.com/jdorn/json-editor.
## Quick start
Install application via pip:
```bash
pip install django-admin-json-editor
```
Add application to the INSTALLED_APPS settings:
```python
INSTALLED_APPS = [
...
'django_admin_json_editor',
...
]
```
Define schema of json field:
```python
DATA_SCHEMA = {
'type': 'object',
'title': 'Data',
'properties': {
'text': {
'title': 'Some text',
'type': 'string',
'format': 'textarea',
},
'status': {
'title': 'Status',
'type': 'boolean',
},
},
}
```
Use JSONEditorWidget to bind editor to the form field:
```python
class JSONModelAdminForm(forms.ModelForm):
class Meta:
model = JSONModel
fields = '__all__'
widgets = {
'data': JSONEditorWidget(DATA_SCHEMA, collapsed=False),
}
```
### Dynamic schema
It is possible to build dynamic schema for widget:
```python
def dynamic_schema(widget):
return {
'type': 'array',
'title': 'tags',
'items': {
'type': 'string',
'enum': [i for i in Tag.objects.values_list('name', flat=True)],
}
}
```
```python
@admin.register(JSONModel)
class JSONModelAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
widget = JSONEditorWidget(dynamic_schema, False)
form = super().get_form(request, obj, widgets={'tags': widget}, **kwargs)
return form
```
[![Build Status](https://travis-ci.org/abogushov/django-admin-json-editor.svg?branch=master)](https://travis-ci.org/abogushov/django-admin-json-editor)
![Admin Json Editor](example/example.png)
Application adds support for editing JSONField in Django Administration via https://github.com/jdorn/json-editor.
## Quick start
Install application via pip:
```bash
pip install django-admin-json-editor
```
Add application to the INSTALLED_APPS settings:
```python
INSTALLED_APPS = [
...
'django_admin_json_editor',
...
]
```
Define schema of json field:
```python
DATA_SCHEMA = {
'type': 'object',
'title': 'Data',
'properties': {
'text': {
'title': 'Some text',
'type': 'string',
'format': 'textarea',
},
'status': {
'title': 'Status',
'type': 'boolean',
},
},
}
```
Use JSONEditorWidget to bind editor to the form field:
```python
class JSONModelAdminForm(forms.ModelForm):
class Meta:
model = JSONModel
fields = '__all__'
widgets = {
'data': JSONEditorWidget(DATA_SCHEMA, collapsed=False),
}
```
### Dynamic schema
It is possible to build dynamic schema for widget:
```python
def dynamic_schema(widget):
return {
'type': 'array',
'title': 'tags',
'items': {
'type': 'string',
'enum': [i for i in Tag.objects.values_list('name', flat=True)],
}
}
```
```python
@admin.register(JSONModel)
class JSONModelAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
widget = JSONEditorWidget(dynamic_schema, False)
form = super().get_form(request, obj, widgets={'tags': widget}, **kwargs)
return form
```
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
django-admin-json-editor-0.2.0.tar.gz
(941.8 kB
view hashes)
Close
Hashes for django-admin-json-editor-0.2.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf245d72aad4fa43200bb20dd4ffb2f759f7dfe2af7e394456750cbe6027ffcc |
|
MD5 | 00604c442ae4a6513939a18efc213bc3 |
|
BLAKE2b-256 | 5b6e6f0486784c6fde508059e8b21449351bf329655abb63e9fc921ad8845538 |