У меня есть модель, которая собирает лайки, которые пользователи выбирают в книгах.
Итак, у каждой записи есть user_id, like_id и book_id.
Я хочу URL-адрес, похожий на:
(?P<top_num>\d+)/likes/
Который будет направлен на представление, которое делает что-то вроде этого:
class TopLikes(ListView):
""" Get all the archived projects """
queryset = Like.objects.filter(display=True)
template_name = "books/TopLikes.html"
paginate_by = 10
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(TopLikes, self).dispatch(*args, **kwargs)
Чего я не знаю, так это как принять top_num
в качестве числа, которое нужно передать представлению, чтобы вернуть десятку книг с наибольшим количеством лайков.
для меня будет иметь смысл сделать что-то вроде queryset = Like.objects.filter(display=True).annotate(num_books=Count('books')).order_by('num_books')
Для меня имеет смысл получить лайки, а затем использовать лайки, чтобы сделать что-то подобное в шаблоне:
{% for object in object_list %}
{{ object.book.title }} with {{ object|length }}
{% endfor %}
Будет ли это проще сделать в виде пользовательского представления?
Спасибо