Форма модели Django не сохраняется/не проверяется

Я новичок в Django, и у меня есть форма комментариев на странице листинга сайта, над которым я работаю. При попытке ввести комментарий он не сохраняется. Я предполагаю, что функция is_valid() не возвращает True, поэтому сохранение не происходит, но я не понимаю, почему он должен быть не валидным. Я думал, что эта функция в первую очередь проверяет, что все поля заполнены правильными данными.
. Как я уже сказал, я новичок в Django, поэтому любой совет будет принят с благодарностью.

Перенаправление Else является временным, пока я не добьюсь правильной работы.

Views.py

@login_required
def comment(request, listing):
    listing = AuctionListings.objects.get(name=listing)
    form = NewCommentForm(request.POST)
    if form.is_valid():
        comment = form.save(commit=False)
        comment.user = request.user
        comment.listing = listing
        comment.save()
        return HttpResponseRedirect(reverse("listing", args=[listing.name]))
    else:
        return HttpResponseRedirect(reverse("listing", args=[listing.name]))

models.py

class Comments(models.Model):
    listing     = models.ForeignKey(AuctionListings, on_delete=models.CASCADE)
    user        = models.ForeignKey(User, on_delete=models.CASCADE)
    comment     = models.CharField(max_length=255, validators=[MinLengthValidator(1)])
    date        = models.DateTimeField(auto_now_add=True)

forms.py

class NewCommentForm(forms.ModelForm):
    class Meta:
        model  = Comments
        fields = [
            'comment'
        ]
        widgets = {
            'comment': forms.Textarea(attrs={
                'placeholder': 'Enter your comment (255 char. max)',
            })
        }

Старый возврат render

        return render(request, "auctions/listing.html", {
            "newComment": form,
            "listing": listing,
        })

В представлении листинга вы каждый раз создаете новую форму, вместо того чтобы заново отображать экземпляр "newComment": NewCommentForm(), Вы хотите передать форму в представление листинга и, если она не действительна, отобразить эту форму, а не новую. Вы захотите создать новую форму, только если представление еще не получает эту форму в качестве аргумента.

Вернуться на верх