Словари в 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? Заранее спасибо.

Вернуться на верх