Как сгруппировать эти базы по одному адресу?

{'street_number': '3', 'street_name': 'Raycraft', 'street_type': 'Dr', 'municipality': 'Amherstview', 'postal_code': 'K7N1Z1', 'type_of_reports': 'Valuation'}, {'street_number': '3', 'street_name': 'Raycraft', 'street_type': 'Dr', 'municipality': 'Amherstview', 'postal_code': 'K7N1Z1', 'type_of_reports': 'Inspection'}

Сгруппируйте эти значения по адресу ?

Например, результат должен быть таким: {'street_number': '3', 'street_name': 'Raycraft', 'street_type': 'Dr', 'municipality': 'Amherstview', 'postal_code': 'K7N1Z1', 'type_of_reports': ['Оценка', Инспекция]}

Предполагаю, что каждый из этих ключей является именем поля в модели. Если вы хотите сделать это непосредственно в шаблоне, вы можете использовать regroup

В вашей модели добавьте свойство, которое представляет собой строку со всей информацией, которую вы хотите сгруппировать:

@cached_property
def id_str(self):
    return f'{self.street_number} {self.street_name}, {self...}'#add all fields you wish to group by

Затем в представлении добавьте к контексту кверисет модели и в шаблоне перегруппируйте по этому свойству (предположим, что объект контекста называется кверисетом):

{% regroup queryset by id_str as regrouped_queryset %}
<ul>
  {% for address in regrouped_queryset %}
    <li>{{ address.grouper }}</li>
      <ul>
        {% for each in address.list %}
          <li>{{ each.type_of_reports }}</li>
        {% endfor %}
      </ul>
    </li>
  {% endfor %}
</ul>
Вернуться на верх