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

saveModelFormデフォルトでのみ利用可能であり、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 に答える