Одна кнопка "нравится" нравится каждому сообщению с помощью _set lookup
Я создаю простое/легкое групповое приложение, в котором пользователи могут вступать в группу, создавать и любить посты, поэтому я сделал три models
:- Group
, BlogPost
, 'Like' (для того, чтобы любить посты в блоге).
После вступления в группу я добавляю Like model
в blogposts.like_set.all
, чтобы пользователи могли лайкнуть сообщения, если они им не понравились.
Итак, я создал like button
для каждого поста в блоге, но когда request.user
ставит лайк посту, тогда каждый пост становится лайковым.
models.py
class Group(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=300)
class BlogPost(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
body = models.CharField(max_length=300)
group_of = models.ForeignKey(Group, on_delete=models.CASCADE)
class LikeBlogPost(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
blog_of = models.ForeignKey(User, on_delete=models.CASCADE)
views.py
def group_detail_view(request, group_id):
obj = get_object_or_404(Group, pk=group_id)
blog_posts = obj.blogpost_set.all()
likePost = LikeBlogPost.objects.filter(blog_of__in=blog_posts,
user=request.user).first()
context = {'obj':obj,'blog_posts':blog_posts,'likePost':likePost}
return render(request, 'group_detail_view.html', context}
group_detail_view.html
{% for allPosts in blog_posts %}
{{ allPosts.body }}
{% if request.user == likePost.user %}
<button name='submit' type='submit'>UnLike</button>
{% else %}
<button name='submit' type='submit'>Like</button>
{% endif %}
{% endfor %}
Что я пытаюсь сделать? :-
Я пытаюсь поставить лайк только одному сообщению за раз, но теперь если мне нравится одно сообщение, то все сообщения становятся лайками.
Что я пробовал? :-
- Сначала я попробовал использовать метод
_set.all
вtemplate
, например :-
{% for lik in allPosts.likeblogpost_set.all %}
{% if request.user == lik.user %}
Liked
{% else %}
Not Liked
{% endif %}
{% endfor %}
Когда я пробую это, если мне нравится пост, то он показывает Liked
как if statement
, но если мне не нравится, то он Не показывает Not Liked
как else statement
.
- Попробовал
new query
вview
как :-
lk = blog_posts.filter(likeblogposts__blog_of__in=blog_posts)
и в шаблоне он также не показывает else statement
как выше
Я пробовал много раз, но ничего не помогло.
Любая помощь будет очень признательна. Спасибо