Как вывести число строки в 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)
Вернуться на верх