Как передать все атрибуты объектов в 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