Словари в Django Views: Итерация по словарю, содержащему пары ключ-кверисет
В настоящее время у меня очень раздутая функция просмотра деталей в моем модуле Django Views. Основная причина этого в том, что я создаю списки из словарей (от 2-50 пар ключ-значение) путем итерации по каждому словарю и добавления результата в уникальный список. Затем эти списки становятся доступны шаблонам для дальнейшей итерации и отображения. Вот пример кода списка из словаря в функции детального просмотра в Views:
def bacteria_detail_view(request, slug):
...
temperature = []
temp_dict = {'low': My_model.growth_temp_low, 'room_temp': My_model.growth_temp_room,
'body_temp': My_model.growth_temp_body, 'high': My_model.growth_temp_high}
for key, val in temp_dict.items():
if val is not None:
temperature.append(val)
...
Затем это отображается в шаблоне:
<li>
{% if temperature %}
<i style="color: blue"><b>T</b>emperature tolerance:</i>
{% for t in temperature %}
{{ t|growstemp|default_if_none:''}}
{% endfor %}
{% endif %}
</li>
К итерируемому объекту применяется пользовательский фильтр шаблонов:
@register.filter(name='growstemp')
def growstemp(value):
if value:
if "+" in value:
value = value.replace("(+)", "")
return f"grows at {value}\u2103;"
elif "neg" in value:
value = value.replace("(neg)", "")
return f"doesn't grow at {value}\u2103;"
...
else:
return ''
Этот подход работает хорошо, но я подозреваю, что он не оптимален и перегружает функцию View. Есть ли более простой подход? Поскольку словари представляют собой пары ключ-QuerySet, есть ли лучший способ, например, программный доступ к паре ключ-значение Model 'verbose name': 'field name'? Или есть способ рефакторинга словарей и удаления их из модуля View? Заранее спасибо.