ValueError в Q & A-подобном приложении для привязки ответов на вопрос - PullRequest
0 голосов
/ 02 июля 2019

Я учусь создавать приложение для вопросов и ответов, используя Django. Я настроил модели для постов, комментариев и пользователей. Я не могу успешно связать id для сообщений с комментариями.

Я попытался связать комментарии с сообщениями, безуспешно переопределяя ModelForm на Django.

Это в моем views.py файле:

    class CommentCreateView(LoginRequiredMixin, CreateView):
    model = Comment
    fields = ['comment']


    def form_valid(self, form):
        form.instance.author = self.request.user
        form.instance.post_id = self.kwargs['post_id']
        return super(CommentCreateView, self).form_valid(form)

У моего models.py есть модель для комментариев:

    class Comment(models.Model):
    cid = models.AutoField(primary_key=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    post_id = models.ForeignKey(Post, on_delete=models.CASCADE)
    comment = models.TextField()
    comment_date = models.DateTimeField(default=timezone.now)

    def save(self, *args, **kwargs):
        super(Comment, self).save(*args, **kwargs)

    def __str__(self):
        return self.comment


    def get_absolute_url(self):
        return reverse('blog-home')

и мой путь URL выглядит следующим образом:

path('comment/<int:post_id>', PostCommentListView.as_view(), name='user-comments')

Я ожидаю, что комментарии будут связаны с постами через ForeignKey. Но когда я пытался сделать то же самое, я получаю ошибку, как описано ниже:

ValueError в / post / 11 / comment / Невозможно присвоить «11»: «Comment.post_id» должен быть экземпляром «Post».

Значение исключения:
Невозможно присвоить «11»: «Comment.post_id» должен быть экземпляром «Post».

1 Ответ

0 голосов
/ 02 июля 2019

Ошибка показывает, что ожидается объект Post. Попробуйте это

form.instance.post_id = Post.objects.get(pk=self.kwargs['post_id'])
...