Сортировка объектов по наибольшему значению атрибута Django

Я создаю приложение, которое будет записывать соревнования по легкой атлетике и очки. В конечном итоге я хочу отображать на экране команды, очки и их общее положение. Команда, набравшая наибольшее количество очков, будет номером один и т.д...

В моей модели есть поле points, которое будет обновляться по мере записи результатов. Я хочу, чтобы модель автоматически определяла положение команды на основе точек других объектов. Как я могу этого добиться?

Вот мой код: models.py

class House(models.Model):
    name = models.CharField(max_length=255)
    points = models.FloatField(default=0, null=False)
    house_color = models.CharField(max_length=10, null=False, blank=False, default='red')
    position = models.IntegerField(default=4)


    def determine_position(self):
        all_houses_queryset = self.objects.all()
        
   

Я попытался получить индекс упорядоченного набора запросов в шаблоне, но он выдал ошибку Value error.

Views.py

def dashboard(request):

    ordered_houses = House.objects.all().order_by('-points').values()
    context = {
        'houses': ordered_houses,
        'range': [1,2,3,4],
    }

    return render(request, 'core/index.html', context)

index.html {% for index, house in houses %}

Просто перечислите элементы:

def dashboard(request):
    ordered_houses = enumerate(House.objects.order_by('-points'), 1)
    return render(request, 'core/index.html', {'houses': ordered_houses})

и работать с:

{% for index, house in houses %}
    <!-- … -->
{% endfor %}

Пожалуйста, не используйте значения, это примитивная одержимость антипаттерн [refactoring.guru] и мешает раскрытию логики в шаблоне, а также следованию отношениям типа ForeignKeys.

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