В следующем html-коде не удается переключиться между «Закладка» и «Без закладки», если один и тот же пользователь добавил в закладки более 1 видео.
Как я могу изменить следующее if loop , чтобы проверить, добавил ли этот конкретный пользователь в закладки это конкретное видео, а не пользователя, имеющего видео, добавленное в закладки в целом?
<td>
<form method='POST' action="{% url 'view:favourite' details.id %}">
{% csrf_token %}
<input type='hidden'>
{% if user.fav_videos.exists %}
<button type='submit'>UnBookmark</button>
{% else %}
<button type='submit'>Bookmark</button>
{% endif %}
</form>
</td>
models.py
class Post(models.Model):
favourite = models.ManyToManyField(User, related_name="fav_videos", blank=True)
urls.py
path('favourite_post/<int:fav_id>', views.favourite_post, name='favourite_post')
views.py
def favourite_post(request, fav_id):
post = get_object_or_404(Post, id=fav_id)
if request.method == 'POST':
if post.favourite.filter(id=request.user.id).exists():
post.favourite.remove(request.user)
else:
post.favourite.add(request.user)
# Rest code
return HttpResponseRedirect(reverse('detailview', args=(fav_id,)))
Класс подробный в views.py
class DetailView(LoginRequiredMixin, DetailView):
context_object_name = "details"
model = Post
template_name = "detail.html"
Комментарий к ответам:
И @Daniel, и @andreihondrari работают отлично, один более эффективен, чем другой.