在jjango admin中将json文本显示为友好列表

时间:2010-07-07 21:57:38

标签: django json django-admin

我在模型中有一个JSONField(http://djangosnippets.org/snippets/1478/),我试图找出向管理员用户而不是json显示数据的最佳方式。

有没有人知道在django admin中执行此操作的最佳方法?

例如,我想

{u'field_user_name': u'foo bar', u'field_email': u'foo@bar.com'}

显示为

field_user_name = foo bar
field_email = foo@bar.com

2 个答案:

答案 0 :(得分:4)

也许创建一个自定义小部件?

class FlattenJsonWidget(TextInput):
    def render(self, name, value, attrs=None):
        if not value is None:
            parsed_val = ''
            for k, v in dict(value):
                parsed_val += " = ".join([k, v])
            value = parsed_val
        return super(FlattenJsonWidget, self).render(name, value, attrs)

答案 1 :(得分:0)

也许您应该创建一个模板过滤器来执行此操作:

from django import template
from django.utils import simplejson as json

register = template.Library()

@register.filter
def json_list(value):
    """
    Returns the json list formatted for display
    Use it like this :

    {{ myjsonlist|json_list }}
    """
    try:
        dict = json.loads(value)
        result = []
        for k, v in dict.iteritems():
            result.append(" = ".join([k,v]))
        return "<br/>".join(result)
    except:
        return value