Я учусь создавать приложение Post-comment для Django. Я понимаю, как и почему текущий пользователь может быть назначен автором в форме комментариев. Но я не понимаю, как post_id можно назначить, чтобы связать комментарий с конкретным сообщением.
Пробовал различными способами, полученными при поиске в сети. Я продолжаю получать различные ошибки - TypeError, KeyError, ValueError и т. Д.
Мой models.py настроен так:
class Post(models.Model):
pid = models.AutoField(primary_key=True)
title = models.CharField(max_length=1000)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('blog-home')#, kwargs={'pk':self.pk})
class Comment(models.Model):
cid = models.AutoField(primary_key=True)
author = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
comment = models.TextField()
comment_date = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.comment
def get_absolute_url(self):
return reverse('blog-home')
def save(self, *args, **kwargs):
super(Comment, self).save(*args, **kwargs)
Файл views.py с представлением создания комментария выглядит следующим образом:
class CommentCreateView(LoginRequiredMixin, CreateView):
model = Comment
fields = ['comment']
def form_valid(self, form,**kwargs):
form.instance.author = self.request.user
form.instance.post_id = self.kwargs['post_id']
# IS THE ABOVE LINE CORRECT?
return super().form_valid(form)
Кнопка «Ответить» находится на главной странице, включенной в каждый почтовый блок. HTML для того же с URL-адресом для него, как показано ниже:
{% extends "blog/base.html" %}
{% block content%}
{% for post in posts%}
<article class="media content-section">
<img class="rounded-circle article-img" src="{{post.author.profile.image.url}}">
<div class="media-body mb-8">
<div class="article-metadata mb-4">
<a class="mr-4" href="{% url 'user-posts' post.author.username %}">{{ post.author }}</a>
<small class="text-muted">{{ post.date_posted|date:"F d, Y P e" }}</small>
</div>
<h2><a class="article-title" href="{% url 'post-detail' post.pid %}">{{ post.title }}</a></h2>
<p class="article-content">{{ post.content }}</p>
<div class="border border-top-0">
<a class="btn float-right btn-info mb-0 mt-1" href="{% url 'comment-create' post.pid %}">Answer</a>
$$$$$ HERE IS THE URL FOR THE ANSWER BUTTON $$$$
</div>
</div>
</article>
{% endfor %}
{% endblock %}
Я не знаю, как передать post_id или идентификатор сообщения, на которое нажимает пользователь. Пожалуйста, помогите !!