Как отфильтровать понравившиеся сообщения по пользователю? (Django)
Я пытаюсь вывести список всех постов, которые понравились самому пользователю. Вот что я пытаюсь написать
(likeapp/models.py)
class LikeRecord(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='like_record')
article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='like_record')
class Meta:
unique_together = ('user', 'article')
(likeapp/views.py)
@transaction.atomic
def db_transaction(user, article):
article.like += 1
article.save()
# like_count = LikeRecord.objects.filter(article=article).count()
if LikeRecord.objects.filter(user=user, article=article).exists():
raise ValidationError('Like already exists')
else:
LikeRecord(user=user, article=article).save()
@method_decorator(login_required, 'get')
class LikeArticleView(RedirectView):
def get_redirect_url(self, *args, **kwargs):
return reverse('articleapp:detail', kwargs={'pk': kwargs['pk']})
def get(self, *args, **kwargs):
user = self.request.user
article = get_object_or_404(Article, pk=kwargs['pk'])
try:
db_transaction(user, article)
messages.add_message(self.request, messages.SUCCESS, '좋아요가 반영되었습니다')
except ValidationError:
messages.add_message(self.request, messages.ERROR, '좋아요는 한번만 가능합니다.')
return HttpResponseRedirect(reverse('articleapp:detail', kwargs={'pk': kwargs['pk']}))
return super(LikeArticleView, self).get(self.request, *args, **kwargs)
(articleapp/models.py)
class Article(models.Model):
writer = models.ForeignKey(User, on_delete = models.SET_NULL, related_name = 'article', null = True)
project = models.ForeignKey(Project, on_delete = models.SET_NULL, related_name = 'article', null = True)
title = models.CharField(max_length=200, null=True)
image = models.ImageField(upload_to='article/', null=False)
content = models.TextField(null=True)
price = models.IntegerField(default=0)
amount = models.CharField(max_length=200, null=True)
created_at = models.DateField(auto_now_add=True, null=True)
like = models.IntegerField(default=0)
(articleapp/views.py)
class ArticleLikeListView(ListView):
model = Article
context_object_name = 'article_like_list'
template_name = 'articleapp/likelist.html'
def get_queryset(self):
user = self.request.user
queryset = LikeRecord.objects.filter()
return queryset
Я пытаюсь использовать функцию filter() для выделения понравившихся постов самого пользователя. Как я могу исправить этот код? Спасибо!
Article.objects.filter(like_record__user=self.request.user)