LasagnaAndroid
LasagnaAndroid

Reputation: 2935

How to access sub level JSON trough Django

So, I get this JSON from Django:

{'something' : 
    {'value':'somethingName','editable':'false'}
},
{'somethingElse': 
    {'value':'somethingElseName','editable':'true'}
}

And show it like this:

{% for key, value in obj.items %}
    {{ key }} : {{ value }}
{% endfor %}

The problem is {{ value }} returns {'value':'somethingName','editable':'false'}, and I can't access value or editable trough {{ value.value }} or {{ value.editable }}.

I'd like to show {{ value.value }} as somethingName instead of the entire JSON.

Is there a way to access 'sub-level' JSON trough Django itself?

Upvotes: 1

Views: 145

Answers (1)

alecxe
alecxe

Reputation: 473873

You cannot use template variable name as a dictionary key using the . notation. The second value in value.value is not interpreted as a string value because you have a variable name value in the loop.

Just rename key and value to obj_key and obj_value respectively:

{% for obj_key, obj_value in obj.items %}
    {{ obj_key }} : {{ obj_value.value }}
{% endfor %}

Demo:

>>> from django.template import Context, Template
>>> t = Template("""
... {% for obj_key, obj_value in obj.items %}
...     {{ obj_key }} : {{ obj_value.value }}
... {% endfor %}""")
>>> obj = {'something' : {'value':'somethingName','editable':'false'}}

>>> t.render(Context({'obj': obj}))
u'something : somethingName'

Hope that helps.

Upvotes: 1

Related Questions