- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在努力集成JSONEditor进入 Django 管理员。我的模型中有一个字段使用 Postgres JSON,并且该库中的树编辑器非常完美。
class Executable(models.Model):
""" Simplified model for sake of the question."""
recipe = JSONField(null=True, blank=True)
我已经取得了不错的进展(我认为),将 JSONEditor 库集成到 Django 管理中适当的创建/编辑屏幕中。数据在加载时显示正确,但由于某种原因,当我在 JSONEditorWidget 中进行编辑时,更改不会保存。我确信我需要处理一些 save
覆盖,或者我遗漏了一些明显的东西,但我真的不知道从这里该去哪里。
import json
from django import forms, utils
from django.contrib import admin
from .models import Executable
class JSONEditorWidget(forms.Widget):
html_template = """
<div id='%(name)s_editor_holder'></div>
<script type="text/javascript">
var options = {
"mode": "tree",
"search": true
};
var %(name)s_editor = new JSONEditor(container, options);
var json = %(value)s
%(name)s_editor.set(json);
%(name)s_editor.expandAll();
var json = %(name)s_editor.get(json);
</script>
<textarea readonly class="vLargeTextField" cols="40" id="id_%(name)s" name="%(name)s" rows="2" height="20px">%(value)s</textarea>
"""
def __init__(self, attrs=None, formats=None, defaults=None):
self.formats = formats
self.defaults = defaults
super(JSONEditorWidget, self).__init__(attrs)
def render(self, name, value, attrs=None):
if isinstance(value, basestring): # Edit existing instance
value = json.loads(value)
result = self.html_template % {
'name': name,
'value': json.dumps(value)
}
return utils.safestring.mark_safe(result)
class ExecutableForm(forms.ModelForm):
recipe = forms.CharField(widget=JSONEditorWidget()) # Kwargs here?
class Meta:
model = Executable
fields = '__all__'
class Media:
css = {
'all': ('http://www.jsoneditoronline.org/app.min.css',) # TEMP
}
js = (
'http://www.jsoneditoronline.org/app.min.js', # TEMP
)
class ExecutableAdmin(admin.ModelAdmin):
model = Executable
form = ExecutableForm
fields = (('request', 'status'), 'recipe')
admin.site.register(Executable, ExecutableAdmin)
最佳答案
我的 Django 1.10.2、jsoneditor#^5.5.9、Postgres 9.5 解决方案:
models.py
from django.contrib.postgres.fields import JSONField
class Consumer(models.Model):
data = JSONField(default=dict, db_index=True)
admin.py:
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)
jsoneditor.html:
<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>
Blockquote Written with StackEdit.
关于django - JsonEditor 与 Django Admin 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37535618/
所以,我正在做一个 Angular 项目 最近我在运行 npm start 时开始面临这个问题.我没有遇到这个问题,如果复制旧的 node-modules文件夹,但只有当我做一个新的 npm inst
我无法显示我的 JsonEditor 组件。这是我正在使用的代码: {{info.message}} Welcome to scope360 admi
我正在使用来自 https://www.npmjs.com/package/angular4-jsoneditor 的 Angular4-JsonEditor . 我能够看到树格式的 JSON。如前所
我是新来的 react 。但我使用 React CLI 创建了一个 React 应用程序,现在我想在这个应用程序中使用 jsoneditor。我在这里显示的编辑器链接。 JSON Editor 当我将
我正在努力集成JSONEditor进入 Django 管理员。我的模型中有一个字段使用 Postgres JSON,并且该库中的树编辑器非常完美。 模型.py class Executable(mod
我正在尝试在 Shiny 的应用程序中使用 listviewer 包中的 jsonedit 并希望显示默认情况下完全展开的树。在 jsonedit() 函数中没有执行此操作的选项,但底层 javasc
我正在使用 ng-jsoneditor 在 AngularJS 应用程序中显示和格式化 JSON 数据。正在关注this和 this文章。 HTML: JS: vm.json = { "Array
我是一名优秀的程序员,十分优秀!