[python] Django : 모델 양식 “object has no attribute ‘cleaned_data'”
내 수업 중 하나에 대한 검색 양식을 만들려고합니다. 양식의 모델은 다음과 같습니다.
from django import forms
from django.forms import CharField, ModelMultipleChoiceField, ModelChoiceField
from books.models import Book, Author, Category
class SearchForm(forms.ModelForm):
authors = ModelMultipleChoiceField(queryset=Author.objects.all(),required=False)
category = ModelChoiceField (queryset=Category.objects.all(),required=False)
class Meta:
model = Book
fields = ["title"]
그리고 내가 사용하는보기는 다음과 같습니다.
from django.shortcuts import render_to_response, redirect, get_object_or_404
from django.template import RequestContext
from books.models import Book,Author
from books.forms import BookForm, SearchForm
from users.models import User
def search_book(request):
if request.method == "POST":
form = SearchForm(request.POST)
if form.is_valid():
form = SearchForm(request.POST)
stitle = form.cleaned_data['title']
sauthor = form.cleaned_data['author']
scategory = form.cleaned_data['category']
else:
form = SearchForm()
return render_to_response("books/create.html", {
"form": form,
}, context_instance=RequestContext(request))
양식은 정상적으로 표시되지만 제출하면 오류가 발생합니다. 'SearchForm' object has no attribute 'cleaned_data'
무슨 일이 일어나고 있는지 잘 모르겠습니다. 누군가 나를 도울 수 있습니까? 감사!
답변
어떤 이유로을 확인한 후 양식을 다시 인스턴스화합니다 is_valid()
. 양식 은 호출 cleaned_data
되었을 때만 속성을 가져 오며이 is_valid()
새로운 두 번째 인스턴스에서 호출하지 않았습니다.
두 번째 만 제거하면 form = SearchForm(request.POST)
모든 것이 잘 될 것입니다.
답변
다음과 같은 코드를 작성합니다.
def search_book(request):
form = SearchForm(request.POST or None)
if request.method == "POST" and form.is_valid():
stitle = form.cleaned_data['title']
sauthor = form.cleaned_data['author']
scategory = form.cleaned_data['category']
return HttpResponseRedirect('/thanks/')
return render_to_response("books/create.html", {
"form": form,
}, context_instance=RequestContext(request))
문서 와 매우 비슷합니다 .
답변
때때로 우리가 잊어 버리면
return self.cleaned_data
(가) 비록 장고 형태의 청소 기능, 우리는 어떤 데이터가 없습니다 form.is_valid()
반환합니다 True
.