Как передать все атрибуты объектов в ListView

Это мое детальное представление, я передаю, если пост "понравился" и "общее количество лайков" в контексте. Я хочу сделать то же самое в моем представлении списка для каждого объекта.

class MemeDetailView(DetailView):
    model = Meme
    template_name = "memes/meme_detail.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        meme = get_object_or_404(Meme, id=self.kwargs['pk'])
        context['total_likes'] = meme.total_likes()


        liked = False
        if meme.likes.filter(id=self.request.user.id).exists():
            liked = True

        context['liked'] = liked
        return context

вот мой ListView:


class MemeListView(ListView):
    model = Meme
    paginate_by = 100
    ordering = ['-created_at']

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['now'] = timezone.now()

        return context

Как передать все объекты 'total likes' и 'liked' в контекст?

Вы можете получить все общие лайки и лайки для пагинации мемов следующим образом:

class MemeListView(ListView):
     # rest of the code

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['now'] = timezone.now()
        queryset = self.get_queryset()
        meme_likes_list = list()

        for meme in queryset:
            like_data = dict()
            like_data['total_likes'] = meme.total_likes()
            like_data['liked'] = meme.likes.filter(id=self.request.user.id).exists()
            meme_likes_list.append(like_data)

        context['meme_likes'] = meme_likes_list
        return context
Вернуться на верх