django-jsoneditor-widget

Django form widget form JSONField


Keywords
django, json, widget
License
MIT
Install
pip install django-jsoneditor-widget==1.3.2

Documentation

django-jsoneditor-widget

Django form widget form JSONField

Demo

It look like this.

demo image

Install

  • Install: pip install django-jsoneditor-widget
  • Settings:
    INSTALLED_APPS = [
        # some apps ....
        'jsoneditor',
        # other apps ...
    ]

Create model

from django.db import models
from django.contrib.postgres.fields import JSONField


class Book(models.Model):
    name = models.CharField(max_length=150)
    information = JSONField()

    def __str__(self):
        return self.name

Admin site settings

  • Use ModelAdmin

    from django.contrib import admin
    
    from jsoneditor.admin import JSONFieldModelAdmin
    
    from .models import Book
    
    
    admin.site.register(Product, JSONFieldModelAdmin)
  • Use mixin

    from django.contrib import admin
    
    from jsoneditor.admin import JSONFieldAdminMixin
    
    from .models import Book
    
    
    @admin.register(Book)
    class BookModelAdmin(JSONFieldAdminMixin, admin.ModelAdmin):
        pass
  • Use custom widget to specify jsoneditor options

    from django.contrib import admin
    from django.contrib.postgres.fields import JSONField
    
    from jsoneditor.forms import JSONEditor
    
    from .models import Book
    
    
    class TextJSONEditor(JSONEditor):
        jsoneditor_options = {
            "mode": "text"
        }
    
    
    @admin.register(Book)
    class BookModelAdmin(admin.ModelAdmin):
        formfield_overrides = {
            JSONField: {"widget": TextJSONEditor}
        }