Основываясь на том, что ваши объекты выглядят как от вашей модели, и ваш шаблон, я предложил бы попробовать это:
при условии:
a = Generic.objects.get(pk=generic_id)
# a == {'field__name':'key1', 'value_char':'value1a', 'value_num':'value1'}
views.py
from django.shortcuts import render_to_response, get_object_or_404
def query_test(request, generic_id):
a = get_object_or_404(Generic, pk=generic_id)
return render_to_response("query_test.html", a,
context_instance=RequestContext(request))
query_test. html
Name: {{field__name}}
Char: {{value_char}}
Num : {{value_num}}
Ваше представление не показывает, что вы ожидаете более одного объекта, так как вы ищете идентификатор, поэтому ваш шаблон будет форматировать только один объект.
Редактировать: В случае, если вы пытаетесь отобразить список результатов
views.py может выглядеть примерно так:
def query_test(request, generic_id=None):
if generic_id is not None:
a = Generic.objects.filter(pk=generic_id)
else:
a = Generic.objects.all()
c = {'generic': a}
# add some extra values
c['value1'] = "I am value1"
# add a whole dictionary of other values
c.update({'value2': "yay val2", 'value3a': 3, 'value4': "I am 4"})
return render_to_response("query_test.html", c,
context_instance=RequestContext(request))
И ваш шаблон что-то вроде:
<table>
<tr>
<td>Description1</td><td>{{value1}}</td>
<td>Description2</td><td>{{value2}}</td>
<td>Description3</td><td>{{value3a}}</td>
<td>Description4</td><td>{{value4}}</td>
</tr>
{% for item in generic %}
<tr>
<td>Name: {{item.field__name}}</td>
<td>Char: {{item.value_char}}</td>
<td>Num : {{item.value_num}}</td>
</tr>
{% endfor %}
</table>
Редактировать2: Обращение к странному объекту, который вы отправляете на ваш templa te
Основываясь на вашем обновленном вопросе ... Это не словарь. Его список словарей, и действительно странно, как вы извлекаете эти данные из экземпляра одной модели. Но предполагая, что это действительно то, чего вы действительно хотите, у вас есть несколько вариантов.
1) Исправьте этот объект данных ПЕРЕД отправкой его в шаблон. Я понятия не имею, хотите ли вы все элементы в этом списке или только определенный элемент.
not_a_generic_id = Generic.objects.get(pk=127)
not_a_dict = not_a_generic_id._get_dict()
dict_that_I_actually_want = not_a_dict[1]
return render_to_response("query_test.html", dict_that_I_actually_want)
2) Отправить весь этот список в шаблоне и цикла по каждому пункту, а затем получить доступ к значениям:
views.py
not_a_generic_id = Generic.objects.get(pk=127)
not_a_dict = not_a_generic_id._get_dict()
c = {"still_not_a_dict": not_a_dict}
return render_to_response("query_test.html", c)
шаблон.HTML
<table>
{% for actual_dict in still_not_a_dict %}
<tr>
<td>Name: {{actual_dict.field__name}}</td>
<td>Char: {{actual_dict.value_char}}</td>
<td>Num : {{actual_dict.value_num}}</td>
</tr>
{% endfor %}
</table>
3) Даже если шаблон не позволяет фактически получить доступ числовых индексов списков, потому что вы suppost сортировать эти данные из себя с точкой зрения ... если вы настаиваете на доступ к определенному индексу что список в шаблоне, сделать то же самое, как # 2 для views.py, но:
template.html
{% for actual_dict in still_not_a_dict %}
{% if forloop.counter == 1 %}
{{actual_dict.value_char}}
{% endif %}
{% endfor %}
Какую проблему вы на самом деле иметь? Можете ли вы показать нам свой шаблон? Можете ли вы показать нам какие-либо ошибки, с которыми вы сталкиваетесь? – Marcin
Я не знаю, как настроить его. Я не уверен, как получить значения dict из моего файла models.py, который будет обработан в представлении, а затем отображен в шаблоне. Прямо сейчас html выглядит как таблица, в которой говорится «Описание 1 {{value1}}» и т. Д. –
Я знаю, как заставить его работать с более простыми словарями ["first_name": "Joe", "last_name": "Smith" ]. Я просто не могу понять этот более сложный словарь. –