Display json text as friendly list in django admin

I have a JSONField ( http://djangosnippets.org/snippets/1478/ ) in the model, and I'm trying to find a better way to display the data for the admin user, not json.

Does anyone know a better way to do this in admin django?

For example, I would like

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

to display as

field_user_name = foo bar
field_email = foo@bar.com
+3
source share
2 answers

Is it possible to create my own widget?

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)
+4
source

You might need to create a template filter to do this:

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
0
source

Source: https://habr.com/ru/post/1753608/


All Articles