Отчего может быть невалидна форма Django?
В проекте нужно сохранять комментарии под записью Hotel, однако по непонятной причине после нажатия на кнопку происходит обычное перенаправление, данные не записываются в БД. Путем долгих исканий выяснил, что форма не проходит валидность, хотя никаких ошибок не кидает и все условия на заполнение вроде как проходятся. В чем может быть проблема? Релевантные части кода:
forms:
class CommentForm(forms.ModelForm):
class Meta:
model = Comment
fields = ('post','email','name','body','active')
models:
class Hotel(models.Model):
name=models.TextField(max_length=20)
address=models.TextField(max_length=40)
desc=models.TextField(max_length=20)
places=models.IntegerField(max_length=4)
types=models.TextField()
facilities=models.TextField()
owner=models.TextField(max_length=20)
def __str__(self):
return self.name
class Comment(models.Model):
post = models.ForeignKey(Hotel,
on_delete=models.CASCADE,
related_name='comments')
name = models.CharField(max_length=80)
email = models.EmailField()
body = models.TextField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
active = models.BooleanField(default=True)
class Meta:
ordering = ('created',)
def __str__(self):
return 'Comment by {} on {}'.format(self.name, self.post)
views:
def review(request,ho_id):
post = Hotel.objects.get(pk=ho_id)
comments = post.comments.filter(active=True)
new_comment = None
comment_form = CommentForm(data=request.POST)
if comment_form.is_valid():
new_comment = comment_form.save(commit=False)
new_comment.post = post
new_comment.save()
try:
hotell=Hotel.objects.get(pk=ho_id)
except Hotel.DoesNotExist:
raise Http404("Hotel does not exist")
return render(request,'review.html',
{"hotel":hotell,'post': post,
'comments': comments,
'new_comment': new_comment,
'comment_form': comment_form})
review.html (та часть, где форма, в другой - вывод существующих комментариев):
{% if new_comment %}
<h2>Your comment has been added.</h2>
{% else %}
<h2>Add a new comment</h2>
<form action="." method="post">
{{ comment_form.as_p }}
{% csrf_token %}
<p><input type="submit" value="Add comment"></p>
</form>
{% endif %}