Я хочу CRUD комментарии пользователя django

Чего вы хотите достичь

Когда пользователь публикует комментарий к фильму, я могу комментировать только этот комментарий, и я хочу обновлять и удалять его без изменения URL.

Что вы хотите спросить

  1. Как сделать так, чтобы мое сообщение появлялось в верхней части новых сообщений, когда пользователи оставляют комментарии?
  2. Как мне изменить delete и update при изменении url опубликованного комментария?

Текущий код

def view_movie_detail (request, movie_id):
    if not (Movie.objects.filter (id = movie_id)):
        Movie (id = movie_id) .save ()
    movie = Movie.objects.get (id = movie_id).
    if request.method == "POST" and not (Comment_movie.objects.filter (user = request.user, movie = movie_id)):
        form = Comment_movie_CreateForm (request.POST)
        if form.is_valid ():
            Comment_movie (
                comment = form.cleaned_data ['comment'],
                user = request.user,
                stars = form.cleaned_data ['stars'], user = request.user, star = form.cleaned_data ['stars'],
                Movie = movie
            ). Save ()
        return redirect ('view_movie_detail', movie_id = movie_id)

        
    Otherwise
        
        form = Comment_movie_CreateForm ()
        data = requests.get (f "https://api.themoviedb.org/3/movie/{movie_id}?api_key={TMDB_API_KEY}&language=ja-US")
        Recommendation = requests.get (f "https://api.themoviedb.org/3/movie/{movie_id}/recommendations?api_key={TMDB_API_KEY}&language=en-US")
        comments = reversed (Comment_movie.objects.filter (movie_id = movie_id))
        Mean = movie.average_stars ()
        Context = {
            "data": data.json (),
            "Recommendations": recommendations.json ().
            "Type": "Movie",
            "Comment": Comment
            "average": average value,
            "form": form.
        }
        return render (request, "Movie / movie_detail.html", context)
class Movie (models.Model):
    id = models.CharField (primary_key = True, editable = False,
                          validators = [alphanumeric], max_length = 9999)
    def get_comments (self):
        return Comment_movie.objects.filter (movie_id = self.id)
    
    def average_stars (self):
        Comments = self.get_comments ()
        n_comments = comments.count ()

        if n_comments:
            return sum ([comment.stars for comment in comments]) / n_comments
        else: else:
            return 0
class Comment_movie (models.Model):
    comment = models.TextField (max_length = 1000)
    stars = models.FloatField (
                     blank = False,
                     null = False,
                     default = 0,
                     validators = [MinValueValidator (0.0),
                     MaxValueValidator (10.0)]
                  )

    user = models.ForeignKey (CustomUser, on_delete = models.CASCADE)
    movie = models.ForeignKey (Movie, on_delete = models.CASCADE)
    created_at = models.DateTimeField (default = datetime.now)
    updated_at = models.DateTimeField (auto_now = True)
    class Meta:
        unique_together = ('user','movie')
        indexes = [
        models.Index (fields = ['user','movie']),
        ]
    
{% if user.is_anonymous%}
    <a class="nav-link" href="{% url'account_login'%}"> Login </a>
    {% else%}
    <h2> Comments </ h2>
    {% if form.errors%}
        <div class = "error_list">
            {% for errors in form.errors.values%}
                {% for error in errors%}
                    {{error}} <br>
                {% endfor%}
            {% endfor%}
        </ div>
    {% endif%}
    <form method = "POST" enctype = "multipart / form-data">
        {% csrf_token%}
        {{form}}
        <button type = "submit"> Post Comment </ button>
    </ form>
    {% endif%}
    <hr>
    <table>
        <tr>
            <tr>
            <th> image </ th>
            <th> name </ th>
            <th> created_at </ th>
            <th> comment </ th>
            <th> evaluation </ th>
            </ tr>
            {% for c in comments%}
            <tr>
                    <td> <img class = "rounded-circle" src = "{{user.avatar.url}}" alt = "..." width = "100" height = "100"> </ td>
                    <td> {{c.user.nickname}} </ td>
                    <td> {{c.created_at}} </ td>
                    <td> {{c.comment}} </ td>
                    <td> <h2 class = "rate" style = "--rating: {{c.stars}}"> {{c.stars}} </ h2> </ td>
            </tr>
        {% endfor%}.
    </ table>
Вернуться на верх