В проекте использую стандартную модель пользователя:
django.contrib.auth.models.User
, после авторизации пишу комментарий под постом и после нажатия на кнопку отправить ничего не происходит, комментарий не выкладывается и в админ панели не появляется, до удаления строки
<input name="name" placeholder="Ваш имя...">
из файла post_detail.html все работало кроме имени, имя на странице указывалось авторизованного пользователя, а в админ панели показывало введенное на странице в
input
. Как сделать так что бы всё заработало?
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')