2012-02-28 40 views
0

誰かが間違っていることを教えてもらえますか?Djangoエラー: 'function'オブジェクトに 'save'属性がありません

Model.py

class Cattest(models.Model): 
category = models.ForeignKey(Category)  
info = models.CharField(max_length=35, blank=True)  

class CattestForm(forms.Form): 
autocomplete = forms.CharField(
    label='Type the name of a category (AutoCompleteWidget)', 
    widget=selectable.AutoCompleteWidget(CategoryLookup), 
    required=False, 
) 
info = forms.CharField(max_length=35, label="Information") 

view.py

def cattest(request): 
if request.method == 'POST': 
    form = CattestForm(request.POST) 
    if form.is_valid(): 
     cattest.save()   
else: 
    if request.GET: 
     form = CattestForm(initial=request.GET) 
    else: 
     form = CattestForm() 
return render_to_response('bsmain/form.html', {'form': form}, context_instance=RequestContext(request))  

トレースバックform.py:/ bsmain/cattest/

はAttributeError POST リクエストURL:http://127.0.0.1:8000/bsmain/cattest/ Djangoのバージョン:1.3.1 例外の種類:はAttributeError 例外値:

'関数' オブジェクト

'関数' オブジェクトは

リクエストメソッド '保存' 何の属性を持っていませんcattestで/home/bill/workspace/boatsite/../boatsite/bsmain/views.py、ライン50 Pythonの実行可能ファイル::は/ usr/binに/ pythonの PYT

例外場所 '保存' 何の属性を持っていませんhonバージョン:2.6.5

+0

フォームで参照されるモデルで.save()を呼び出すのではなく、ビュー関数自体を呼び出す必要はありませんか? – imm

答えて

3

あなたの視点にタイプoがあります。

save()はあなたの機能にあります。cattest.save() これはフォーム上にあるはずですか? ModelFormを見てみると、モデルに直接マッピングされたフォームが提供されているように見えます。

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#django.forms.ModelForm

使用しているフォームは、通常の形態であり、保存方法を持っていません。 ModelFormをサブクラス化した後、フォームインスタンスでsaveを呼び出すことができます。

if your_form.is_valid(): 
    your_form.save() 
関連する問題