Сортировка объектов по наибольшему значению атрибута 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] и мешает раскрытию логики в шаблоне, а также следованию отношениям типа ForeignKey
s.