2013-09-15 5 views
0

У меня есть вызов внешнего источника данных, который успешно возвращает словарь в этом формате. Может быть любое количество записей:Django Template - итерация через вложенный словарь - слишком много примеров

{ 
'0090000': {'status': 'some status', 'modified_date': '2013-08-09T14:23:32Z', 'modified_by': 'John Doe', 'severity': '3 (Normal)', 'created_by': 'Dan Smith', 'summary': "some status", 'created_date': '2013-07-18T21:10:36Z'}, 
'0060000': {'status': 'some status', 'modified_date': '2013-06-24T03:19:01Z', 'modified_by': 'Jay Johnson', 'severity': '4 (Low)', 'created_by': 'Tony Thompson', 'summary': "some other status", 'created_date': '2012-05-03T17:45:19Z'}... 
} 

Я тяну эти данные, используя некоторую информацию, собранную в форме. Я прочитал тонну документов и примеров того, как перебирать это и представлять данные в шаблоне, но я не могу заставить его работать.

Мое мнение заключается в следующем:

def agenda_detail(request, agenda_id): 

    #get the meeting data 
    a_data = get_object_or_404(meetingEvent, pk=agenda_id) 

    #get the DEE data for the VAT fieldset 
    account_id = a_data.account_number.pk 

    #get the stored session user/pass 
    username = request.session['username'] 
    password = request.session['password'] 

    dee_data = onsiteEngineer.objects.filter(account=account_id) 

    #now we get the case data from the Portal API 
    portal_raw = CustomerInformation() 
    customer_data = portal_raw.getOpenCaseInfo(account_id,username,password) 

    return render_to_response('agendas/detail.html',{'a_data':a_data, 'dee_data': dee_data, 'customer_data': customer_data.iteritems()}, context_instance=RequestContext(request)) 

Мой код шаблона решения это (я не забочусь о HTML форматирования прямо сейчас, я просто хочу, чтобы увидеть данные на экране:

{% for key, value in customer_data.items %} 
<p>{{ key }}</p> 
{% for info in value %} 
    {{ value }} 
{% endfor %} 
{% endfor %} 

он никогда не показывает данные. Я пробовал несколько комбинаций (с использованием .items, используя iteritems и т.д.), но я совсем не могу получить его на работу.

Все советы оценили.

ответ

1

С customer_data - это словарь, вы можете просто отправить 'customer_data': customer_data вместо 'customer_data': customer_data.iteritems() в контексте.

Теперь в шаблоне, попробуйте следующее:

{% for key, value in customer_data.items %} 
    <p>{{ key }}</p> 
    {% for k, v in value.items %} 
     {{ k }}: {{ v }} <br/> 
    {% endfor %} 
{% endfor %} 
+0

Я также заметил ошибку с моей стороны, но этот пример работает точно так же, как и ожидалось. Благодаря!! – jduncan

+0

рад, что это помогло. – karthikr

Смежные вопросы