Исходя из того, как ваши объекты выглядят из вашей модели и вашего шаблона, я бы предложил попробовать это:
при условии:
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>
Edit2 : Адресация к странному объекту, который вы отправляете в шаблон
На основании вашего обновленного вопроса ... Это не словарь. Это список словарей, и действительно странно, как вы извлекаете эти данные из одного экземпляра модели. Но при условии, что вы действительно этого хотите, у вас есть несколько вариантов ..
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)
template.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) Несмотря на то, что шаблон не позволяет вам на самом деле получить доступ к числовым индексам списков, потому что вы должны сами отсортировать эти данные в представлении ... если вы настаиваете на доступе к определенному индексу этого списка в шаблоне, сделать то же самое, что и # 2 для views.py, но:
template.html
{% for actual_dict in still_not_a_dict %}
{% if forloop.counter == 1 %}
{{actual_dict.value_char}}
{% endif %}
{% endfor %}