Как насчет того, чтобы получить только значения для состояний (values_list
- удобный инструмент здесь):
states = Place.objects.values_list('state', flat=True).distinct()
и затем делайте то, что вы делали для каждого состояния, но используйте результаты вашего понимания списка и пропустите вызов .append ().
place_list = [Place.objects.filter(state=state) for state in states]
Это по-прежнему достигает значения счетчика БД + 1 раз, но вы только выполняете запрос для состояний в самом начале. Объекты QuerySet в place_list
все еще будут ленивыми и не будут оцениваться, пока вы их не используете.
ПРИМЕЧАНИЕ: комментарий @pastylegs об использовании тега шаблона regroup
в вашем шаблоне может быть самой проницательной вещью, которую сказал любой из нас. Мой ответ на самом деле просто показывает вам value_list
и список понимания.