Как выводить комментарии под постом от имени авторизованного пользователя в django?

Как правильно заменить код в файлах, models, views и post_detail, что бы комментарии которые отправлял авторизованный пользователь выкладывались на страницу под постом от его имени?

models.py

from django.db import models


# Create your models here.
class Post(models.Model):
    title = models.CharField('Заголовок записи', max_length=50) 
    description = models.TextField('Текст записи', max_length=5000)
    date_add = models.DateTimeField('Дата публикации', auto_now=True)

    def __str__(self):
        return f'{self.date_add} / {self.title}'


class Comments(models.Model):
    name = models.CharField('Имя', max_length=16) # Надо как то изменить что бы туда записывалось имя авторизованного пользователя
    text_comments = models.TextField('Текст комментария', max_length=200)
    post = models.ForeignKey(Post, verbose_name='Публикация', on_delete=models.CASCADE)

    def __str__(self):
        return f'{self.name} / {self.post}'

views.py

class PostDetail(View):
    def get(self, request, post_id):
        post = Post.objects.get(id=post_id)
        return render(request, 'forum/post_detail.html', {'post': post})


class AddComments(View):
    def post(self, request, post_id):
        form = CommentsForm(request.POST)
        if form.is_valid():
            # comment_name = request.user.username
            # print(comment_name)
            comment = form.save(commit=False)
            comment.post_id = post_id
            comment.save()
            print(comment)
        return redirect('post_detail', post_id=post_id)

post_detail.html

<div>
    <h3>Комментарии:</h3>
    <form action="{% url 'add_comments' post.id %}" method="post">
        <h3></h3>
        {% csrf_token %}
        <div>
            <textarea name="text_comments" placeholder="Ваш комментарий..."></textarea>
        </div>
        <div><input type="submit"></div>
    </form>
</div>
<div>
    {% for comment in post.comments_set.all reversed %}
    <div class="view-comment">
        <h4>{{ user.username }}</h4>
        <p><i>{{ comment.text_comments }}</i></p>
    </div>
    {% endfor %}
    </div>

form.py

from django import forms
from .models import Comments



class CommentsForm(forms.ModelForm):
    class Meta:
        model = Comments
        fields = ('name', 'text_comments')
Вернуться на верх