python 처리 - Django:Model Form "객체에 'cleaned_data'속성이 없습니다."




댓글 장고 (4)

어떤 이유로 is_valid() 를 확인한 후에 양식을 다시 인스턴스화합니다. is_valid() 가 호출되고 두 번째 인스턴스에서이 인스턴스를 호출하지 않은 경우에만 Forms는 cleaned_data 속성을 가져옵니다.

두 번째 form = SearchForm(request.POST) 없애고 모두 잘되어야합니다.

내 수업 중 하나에 대한 검색 양식을 만들려고합니다. 양식의 모델은 다음과 같습니다.

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'

무슨 일이 일어나고 있는지 모르겠지만 누군가 나를 도울 수 있습니까? 감사!


다음과 같은 코드를 작성합니다.

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))

documentation 와 거의 같습니다.


때로는 우리가

return self.cleaned_data 

django 폼의 clean 함수에서는 form.is_valid()True 를 반환하지만 데이터가 없습니다.


메모리 예외를 벗어나지 않고이 함수를 호출 할 수 있으므로이 함수는 게으르다.

def veryBigHello():
    i = 0
    while i < 1000000000000000000000000000:
        yield "hello"

numbered = enumerate(veryBigHello())
for i, word in numbered:
    print i, word




python django django-forms