0

我有一个我试图在我的模板中迭代的对象。

我的问题是其中一个字段响应包含json数据,我收到此错误消息

交易'对象不可迭代

{% for item in transaction %}
    {{ item.notjson_fields}}

    {% for jsonItem in item.response %} 

       {{jsonItem}}

    {% endfor %}

{% endfor %}

模型:

 date_created = models.DateTimeField(auto_now_add=True)
 request = JSONField()
 response = JSONField()
4

2 回答 2

2

您正在尝试迭代Transaction不可迭代的对象。

尝试类似的东西

{{ transaction.notjson_fields}}

{% for jsonItem in transaction.response %} 
    {{ jsonItem }}
{% endfor %}

我无法确定,但不知道是什么Transaction样子


编辑:

由于 response 是 JSONField,因此您可以像 dict 一样访问它。做就是了

{{ transaction.response.amount }}
于 2013-04-24T19:22:07.670 回答
1

如果像 Ngenator 所说的那样,您的字段不是 JSON 对象而是字符串,您可能需要先加载它。首先注册一个新的模板标签

    from django import template
    register = template.Library()
    import json

    @register.filter
    def load_json(value):
        return json.loads(value)

然后获取(仅)模板中的金额

    {% with transaction.response|load_json as jsondict %}
    {% for k, v in jsondict.items %}
        {% if k == "amount" %}
            <td>{{ v }}</td>
        {% endif %}   
    {% endfor %}
    {% endwith %}

祝你好运。

于 2013-04-24T19:48:31.523 回答