В общем есть небольшой проект. Через формы получается привязать, только если выбирать в окне выбора(в форме post) к чему оставляем комментарий, но нужно, чтобы это было сделано без участия пользователя.
Модель
class Article(models.Model):
"""
Модель для создания новостей на главной странице
"""
#переменные модели
def get_absolute_url(self):
return reverse('articles_url', kwargs={'slug': self.slug})
class Comment(models.Model):
post = models.ForeignKey(Article, related_name='post', on_delete=models.CASCADE)
author = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name=u"Автор", related_name="author")
body = models.TextField(max_length=1000)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
Вью
def articles(request, slug):
articles = get_object_or_404(Article, slug__iexact=slug)
#Комментарии
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
form.instance.author = request.user
#form.instance.post = request.article
#Я думаю, что нужно корректировать строку выше
form.save()
return redirect("/")
else:
pass
#messages.error(request, ('Пожалуйста, исправьте ошибки.'))
else:
form = CommentForm(instance=request.user)
comment = Comment.objects.order_by('-pk')
context = {
'form':form,
'comments': comment,
'articles': articles,
}
return render(request, 'home/one_news.html', context)
Тут, как я полагаю, нужно как-то через вью привязывать, но как именно не понимаю.
NOT NULL constraint failed: home_comment.post_id вот такая ошибка выходит, если не выводить переменную post через форму.
И как показывать комментарии только у той статьи, к которой они относятся? comment = Comment.objects.order_by('-pk') вот этот вариант показывает на странице каждой статьи все комментарии.