Как вывести число строки в django
Не могу решить задачу на django. Есть такая таблица
Ключ Заголовок
Топ детективов: detective
Топ фантастики: scifi
Топ нехудожественных: nonfiction
И такая модель
class Book(models.Model):
title=models.CharField(max_length=30)
author=models.CharField(max_length=30)
genre=models.CharField(max_length=30)
sales=models.IntegerField()
Сама задача: представлена информация, сколько каких книг было продано за последний год. надо составить топ-5(по продажам) по каждому жанру: детектив () нон-фикшн(nonfiction) и фантастика(scifi).
Пример вывода:
Топ детективов:
1 Девушка с татуировкой дракона 3579
2 Исчезнувшая 2205
3 Девушка в поезде 1909
4 Невинная 1740
5 Нож 1620
Вывод самих книг я сделал, но не могу понять, как пронумеровать строки
book = Book.objects.all()
if genre == 'detective':
books = Book.objects.filter(genre='detective').order_by('-sales')[0:5]
for detectives in books:
print(detectives.title, detectives.sales)
elif genre == 'scifi':
for scifi in Book.objects.filter(genre='scifi').order_by('-sales')[0:5]:
print(scifi.title, scifi.sales)
elif genre == 'nonfiction':
for nonfiction in Book.objects.filter(genre='nonfiction').order_by('-sales')[0:5]:
print(nonfiction.title, nonfiction.sales)
Весь Ваш код можно переписать в три строки с учётом поставленной задачи
books = Book.objects.filter(genre=genre).order_by('-sales')
for index, book in enumerate(books[:5], start=1):
print(index, book.title, book.sales)