无法在Django中保存表单(对象没有属性'保存')

时间:2013-05-08 14:15:01

标签: python django django-forms

以下是我的表格:

class AdvancedSearchForm(forms.Form):
    valueofres = forms.ChoiceField (label="res", choices = ((0, 0),(2.2, 2.2)), required= False)

以下是我的观点:

def advancedsearch(request):
    if request.method == "POST":
        search = AdvancedSearchForm(request.POST, request.FILES)
        if search.is_valid():
            new_search = search.save(commit=False)

我收到错误'AdvancedSearchForm' object has no attribute 'save' ...为什么?

2 个答案:

答案 0 :(得分:8)

默认情况下,{p> save仅适用于ModelForm,而forms.Form不适用<{1}}

您需要做的是: 1.使用“

class AdvancedSearchForm(forms.ModelForm):
    valueofres = forms.ChoiceField (label="res", choices = ((0, 0),(2.2, 2.2)), required= False)
    class Meta:
        model=Search #or whatever object

OR

2)

def advancedsearch(request):
    if request.method == "POST":
        search_form = AdvancedSearchForm(request.POST, request.FILES)
        if search.is_valid():
            cd = search_form.cleaned_data
            search = #populate SearchObject()
            search.save()

答案 1 :(得分:6)

Form没有save()方法。

您需要使用ModelFormdocs),因为它会与model相关联,并知道要在哪里保存。

或者你可以保留你的forms.Form,但是你需要从for中提取有效数据并按照你的方式使用eh数据。

if request.method == "POST":
    search_form = AdvancedSearchForm(request.POST, request.FILES)
    if search_form.is_valid():
        cd = search_form.cleaned_data

        search = Search(
            # Apply form data
        )
        search.save()