12

以下是我的表格:

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'

4

2 回答 2

17

save仅在ModelForm默认情况下可用,不适用于forms.Form

你需要做的是这个。要么使用:

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

或者:

def advancedsearch(request):
    if request.method == "POST":
        search_form = AdvancedSearchForm(request.POST, request.FILES)
        if search_form.is_valid():
            cd = search_form.cleaned_data
            search = #populate SearchObject()
            search.save()
于 2013-05-08T14:19:26.340 回答
9

Forms没有save()方法。

您需要使用ModelForm( docs ),因为它会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()
于 2013-05-08T14:17:05.867 回答