2010-07-07 4 views
3

모델에 JSONField (http://djangosnippets.org/snippets/1478/)가 있는데 json이 아닌 admin 사용자에게 데이터를 표시하는 가장 좋은 방법을 찾으려고합니다.django의 친숙한 목록으로 json 텍스트를 표시합니다.

누구든지 장고 관리 에서이 일을하는 가장 좋은 방법을 알고 있습니까?

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

귀하의 사례에서 JSONField sholud는 유효한 Python dict을 반환합니다. 템플릿에 해당 사전을 보내고 예를 들어 template for loop를 사용하여 표시 할 수 있습니다. –

+0

admin 앱에서이 json 입력란을 다른 형식으로 수정하여 수정할 수 있도록 하시겠습니까? – sebpiq

+0

Sébastien - 아니요, 그냥 템플릿을 수정하지 않고 관리 섹션에서 친숙한 형식으로 표시하고 싶습니다. – kayluhb

답변

4

는 아마도를 만들 :

예를 들어, 나는

field_user_name = foo bar 
field_email = [email protected] 
0

은 아마 당신이 할 수있는 템플릿 필터를 만들어야으로

{u'field_user_name': u'foo bar', u'field_email': u'[email protected]'}

표시하고 싶습니다 맞춤 위젯?

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

이것은 훌륭하지만 템플릿을 사용하지 않고이 작업을 수행 할 수있는 방법이 있습니까? 많은 다른 응용 프로그램에서이 기능을 사용할 수 있기를 원하지만이 방법은 번거로울 수 있습니다. – kayluhb

관련 문제