Причина, по которой указаны неизвестные поля (текст) - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь добавить раздел комментариев к сообщениям в представлении на основе классов, и я получаю Unknown field(s) (text) specified for Comment

Я пересмотрел форму комментариев, так как это место, откуда могла возникнуть эта ошибка

вот models.py

class Comment(models.Model):
    post = models.ForeignKey(Post, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    content = models.TextField(max_length=160)
    timestamp = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return '{}-{}'.format(self.post.title, str(self.user.username))

вот форма комментария

class CommentForm(forms.ModelForm):
    content = forms.CharField(label="", widget=forms.Textarea(
        attrs={'class': 'form-control', 'placeholder': 'Text goes here!!!', 'rows': '4', 'cols': '50'}))

    class Meta:
        model = Comment
        fields = ('content',)

вот views.py

class PostDetailView(DetailView):
    model = Post
    template_name = "post_detail.html"

    def get_context_data(self, *args, **kwargs):
        context = super(PostDetailView, self).get_context_data()
        post = get_object_or_404(Post, slug=self.kwargs['slug'])
        comments = Comment.objects.filter(post=post).order_by('-id')
        total_likes = post.total_likes()
        liked = False
        if post.likes.filter(id=self.request.user.id).exists():
            liked = True

        if self.request.method == 'POST':
            comment_form = CommentForm(self.request.POST or None)
            if comment_form.is_valid():
                content = self.request.POST.get('content')
                comment = Comment.objects.create(
                    post=post, user=request.user, content=content)
                comment.save()
                return HttpResponseRedirect("post_detail.html")
        else:
            comment_form = CommentForm()

        context["total_likes"] = total_likes
        context["liked"] = liked
        context["comments"] = comments
        context["comment_form"] = comment_form
        return context

class PostCommentCreateView(LoginRequiredMixin, CreateView):
    model = Comment
    fields = ['text', ]

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

вот шаблон

       <form action={% url 'score:post-comment' post.slug %} method="post" class="comment-form" action=".">
            {% csrf_token %}
            {{ comment_form.as_p }}
            {% if request.user.is_authenticated %}
            <input type="submit" value="Submit" class="btn btn-outline-success">
            {% else %}
            <input type="submit" value="Submit" class="btn btn-outline-success" disabled> You must be Logged in to Comment
            {% endif %}

1 Ответ

0 голосов
/ 28 мая 2020

В вашем views.py вид PostCommentCreateView содержит fields=['text',]. Это то, к чему относится возникшая ошибка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...