python 管理员为Django,jsoneditor,Postgres的JSON编辑器(来自http://stackoverflow.com/a/40326235/2742038)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 管理员为Django,jsoneditor,Postgres的JSON编辑器(来自http://stackoverflow.com/a/40326235/2742038)相关的知识,希望对你有一定的参考价值。

from django.contrib.postgres.fields import JSONField

class Consumer(models.Model):
    data = JSONField(default={}, db_index=True)dmin
<div id="{{ name }}_editor"></div>

<textarea cols="40" id="id_{{ name }}" name="{{ name }}" rows="10" required="" style="display: none">{{ data }}</textarea>


<script>
    console.log('jsoneditor.html');
    var container = document.getElementById("{{ name }}_editor");

    var options = {
        modes: ['code', 'tree'],
        search: true,

        onChange: function () {
            var json = editor.get();
            document.getElementById("id_{{ name }}").value=JSON.stringify(json);
        }
    };

    var editor = new JSONEditor(container, options);
    var json = {{ data|safe }};
    editor.set(json);
</script>
from django import forms
from django.contrib import admin
from django.utils.safestring import mark_safe
from django.template.loader import render_to_string

from .models import Consumer


class JSONEditorWidget(forms.Widget):

    template_name = 'jsoneditor.html'

    def render(self, name, value, attrs=None):
        context = {
            'data': value,
            'name': name
        }

        return mark_safe(render_to_string(self.template_name, context))


class ConsumerForm(forms.ModelForm):

    class Meta:
        model = Consumer
        fields = '__all__'
        widgets = {
            'data': JSONEditorWidget()
        }

    class Media:
        css = { 'all': ('jsoneditor/dist/jsoneditor.min.css',) }
        js = ('jsoneditor/dist/jsoneditor.min.js', )


class ConsumerAdmin(admin.ModelAdmin):
    list_display = ['pk']
    model = Consumer
    form = ConsumerForm

admin.site.register(Consumer, ConsumerAdmin)

以上是关于python 管理员为Django,jsoneditor,Postgres的JSON编辑器(来自http://stackoverflow.com/a/40326235/2742038)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 django、python 中更改管理字段名称

python 管理员为Django,jsoneditor,Postgres的JSON编辑器(来自http://stackoverflow.com/a/40326235/2742038)

[Python学习] Django 权限控制

Python3+Django3开发简单的人员管理系统

Python学习之——Django项目--后台管理

无偿分享Python Django轻量级saas管理平台