以下是我的表格:
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'
...为什么?
答案 0 :(得分:8)
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()
方法。
您需要使用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()