Django-как установить только один отзыв на пользователя и фильм

#html #django

Вопрос:

models.py

 from django.db import models from django.contrib.auth.models import User class Play(models.Model): title = models.CharField(max_length=150) plot = models.TextField(max_length=900) slug = models.SlugField(unique=True, null=True) cast = models.CharField(max_length=500, default=0) category = models.CharField(choices=CATEGORY_CHOICE, max_length=10) image = models.ImageField(upload_to='movie') year = models.DateTimeField() author = models.ForeignKey(User, default=None, on_delete=models.CASCADE)  def __str__(self): return self.title  class Review(models.Model): user = models.ForeignKey(User, default=None, on_delete=models.CASCADE) movie = models.ForeignKey(Play, blank=True, null=True, on_delete=models.CASCADE) text = models.TextField()  

views.py

 from django.shortcuts import render, redirect, reverse from .models import Play, Review from django.contrib.auth.decorators import login_required from . import forms from django.http import HttpResponseRedirect  def movies_list(request): article = Play.objects.all().order_by('year') return render(request, "articles/movies_list.html", {"articles":article}) def movies_detail(request, slug): articles = Play.objects.get(slug=slug) all_reviews = Review.objects.all().order_by('movie') isReviewAllowed = check_user_review(request, slug) return render(request, "articles/movies_detail.html", {"articles":articles,'all_reviews': all_reviews, 'isReviewAllowed': isReviewAllowed})  @login_required(login_url="/accounts/login/") def article_create(request): if request.method == "POST": form = forms.CreatePlay(request.POST, request.FILES) if form.is_valid(): instance = form.save(commit=False) instance.author = request.user instance.save() return redirect("movies:home") else: form = forms.CreatePlay() return render(request, "articles/article_create.html", {"form":form}) @login_required(login_url="/accounts/login/") def sub_review(request, slug):  form = forms.CreateReview(request.POST) if form.is_valid(): instance = form.save(commit=False) instance.user = request.user show = Play.objects.get(slug=slug) instance.movie = show instance.save() return redirect("movies:detail", slug=slug)  else: form = forms.CreateReview() return render(request, "articles/review.html", {"form":form, "slug":slug}) def check_user_review(request, slug): check = Review.objects.values_list('user', 'movie')  test = Review.objects.count() watch = Play.objects.get(slug=slug)  if test == 0: return True else: for user, movie in check: if user == request.user.id and movie == watch.id: return False else: return True def like_view(request, slug): like = Review.objects.get(id=request.POST.get('review_id'))  like.likes.add(request.user) return HttpResponseRedirect(reverse('movies:detail', args=[slug]))  

movies_detail.html

 {% extends 'base.html' %} {% block content %} lt;img src="{{ articles.image.url }}" width="200px" height="300" style="display: inline-block;" gt; lt;div id="movie_plot"gt; lt;h2gt;{{articles.title}}lt;/h2gt;  lt;pgt;{{articles.plot}}lt;/pgt; {{articles.category}}  lt;pgt;{{articles.cast}}lt;/pgt;   lt;/divgt; {% if isReviewAllowed == True %} lt;div class="isReviewAllowed"gt;  lt;div class="nav_button"gt;lt;a class="new_movie" href="{% url 'movies:review' slug=articles.slug %}"gt;Create Reviewlt;/agt;lt;/divgt; lt;/divgt; {% endif %} {% for review in all_reviews %} {% if review.Review == movie.title %} lt;div class="all_reviews"gt; lt;div class="review"gt; lt;pgt;lt;span style="font-weight: normal;"gt;Reviewed by: lt;/spangt; {{review.user}} lt;/pgt;  lt;pgt;lt;span style="font-weight: normal;"gt;Description: lt;/spangt;{{review.text}}lt;/pgt; lt;form style="text-align: center;" action="{% url 'movies:like' slug=articles.slug %}" method="post"gt; {% csrf_token %} lt;button style="color: white; background: #104e89;" type="submit", name="review_id", value="{{ review.id }}", class="btn btn-primary btn-sm"gt;Likelt;/buttongt; {{review.count_likes}} lt;/formgt; lt;/divgt; {% elif review.movie.title == movie.title %}  lt;div class="review"gt; lt;pgt;lt;span style="font-weight: normal;"gt;Reviewed by: lt;/spangt; {{review.user}} lt;/pgt;  lt;pgt;lt;span style="font-weight: normal;"gt;Description: lt;/spangt;{{review.text}}lt;/pgt; lt;/divgt;  lt;/divgt;  {% endif %} {% endfor %} {% endblock %}  

итак, проблема в том, что когда я создаю обзор с помощью (например:nir_user делает обзор для фильма о бэтмене), обзор появляется во всех фильмах, а не в конкретном фильме , скажите мне, пожалуйста, если вы хотите, чтобы я показал вам больше кода. я прикрепил свои файлы представлений и моделей, чтобы вы, ребята, могли увидеть более подробную информацию о моей проблеме.

Комментарии:

1. Пожалуйста, предоставьте модели…

2. Предоставьте также свои представления

3. @WillemVanOnsem также в моих моделях(сайт не позволяет мне прикреплять лайки = модели. ManyToManyField(Пользователь, имя_сообщения=’blog_comment’) определение количества лайков(self): возвращает себя. likes.count() def __str__(self): возвращает f»{self.movie.title} ‘Пользователь:’ {self.пользователь}»

4. Plz показать виды. файл py

5. @BiswajitPaloi прикрепил представления и модели