Почему я получаю ошибку, что объект формы моей модели не имеет атрибута 'clean_data'?
У меня есть форма на странице, которую пользователи используют для написания комментариев. Есть представление (comment
), которое должно принимать вводимые пользователями данные вместе с некоторой другой информацией и сохранять их в модели. Однако, когда я протестировал его, я получил ошибку:
'CommentForm' object has no attribute 'cleaned_data'
Как это исправить?
views.py:
def comment(request, id):
if request.method == 'POST':
form = CommentForm(request.POST) # the form
if form.is_valid:
current = get_object_or_404(Listing, id=id)
user = User.objects.get(pk=request.user.id)
obj = Comment() # the model
obj.user = user
obj.listing = current
obj.date = datetime.datetime.now()
obj.title = form.cleaned_data['title'] # this is where the error occurs
obj.comment = form.cleaned_data['comment']
obj.rating = form.cleaned_data['rating']
obj.save()
return listing(request, current.id, current.name)
html:
<form action=" {% url 'comment' listing.id %} " method="post" class="comment-form">
{% csrf_token %}
<h2>Comment</h2>
{{ commentForm.title }}
{{ commentForm.comment }}
{{ commentForm.rating }}
<input type="submit" value="Comment" class="submit-btn">
</form>
forms.py:
class CommentForm(forms.Form):
title = forms.CharField(max_length=60, widget=forms.TextInput(attrs={
'class': 'comment-title',
'placeholder': 'Title',
}))
comment = forms.CharField(max_length=1000, widget=forms.Textarea(attrs={
'class': 'comment',
'placeholder': 'Enter Comment'
}))
rating = forms.FloatField(min_value=0, max_value=5, widget=forms.NumberInput(attrs={
'class': 'rating',
'placeholder': 'Rating'
}))
Что вы написали:
if form.is_valid:
Что вы должны были написать:
if form.is_valid():
Пожалуйста, тщательно проверьте свой код, прежде чем задавать вопрос.