ValueError: Невозможно присвоить значение "15": "Comment.post" должен быть экземпляром "Post"

Я пытаюсь настроить систему комментариев для моих постов в проекте, над которым я работаю последние пару месяцев, и я получаю следующую ошибку при попытке использовать post_id (номер или pk) для идентификации поста, к которому делается комментарий:

ValueError at /forum/post/15/comment/new/
Cannot assign "15": "Comment.post" must be a "Post" instance.

Вот как я настроил комментарии:

models.py:

class Post(models.Model):
    titulo  = models.CharField(max_length=150)
    contenido = MarkdownxField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    
    def formatted(self):
        return markdownify(self.contenido)

    def __str__(self):
        return self.titulo

    def get_absolute_url(self):
        return reverse("post-detail", kwargs={"pk": self.pk})
    
class Comment(models.Model):
    post = models.ForeignKey(Post, related_name="comments", on_delete=models.CASCADE)
    name = models.ForeignKey(User, on_delete=models.CASCADE)
    body = MarkdownxField()
    date_added = models.DateTimeField(default=timezone.now)
    
    def __str__(self):
        return '%s - %s' % (self.post.titulo, self.name)

views.py:

class CommentCreateView(CreateView):
    model = Comment
    form_class = CommentForm
    #fields = ['body']
    template_name = "forum/comment_form.html"
    
    def get_post_id(request, post_id):
        post=Post.objects.get(id=post_id)

    class Meta:
        ordering=['-time']
    
    def form_valid(self, form):
        form.instance.post = self.kwargs['pk']
        return super().form_valid(form)
    
    def get_success_url(self):   
        return reverse_lazy('')

forms.py:

class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ['body']
        
        widgets = {
            'body': MarkdownxField()
        }

urls.py:

path('post/<int:pk>/comment/new/', CommentCreateView.as_view(), name='comment-create'),    

Вы пытаетесь присвоить строку form.instance.post, которая должна быть экземпляром Post:

form.instance.post = self.kwargs['pk']

Попробуйте что-нибудь вроде

form.instance.post = Post.objects.get(pk=int(self.kwargs['pk']))
Вернуться на верх