Django错误:'function'对象没有属性'save'

时间:2012-02-28 02:42:24

标签: python django django-forms django-views django-apps

有人可以告诉我我做错了吗?

Model.py

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

form.py

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))    

回溯:

/ bsmain / cattest /

中的AttributeError

'function'对象没有属性'save'

请求方法:POST 请求网址:http://127.0.0.1:8000/bsmain/cattest/ Django版本:1.3.1 异常类型:AttributeError 例外值:

'function'对象没有属性'save'

例外地点:cattest第50行/home/bill/workspace/boatsite/../boatsite/bsmain/views.py Python可执行文件:/ usr / bin / python Python版本:2.6.5

3 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

您正在函数本身调用save方法。这就是错误背后的原因。如果您正在寻找表格保存,那么:

if form.is_valid():
    form.save()

答案 2 :(得分:0)

class CattestForm(forms.Form):应该是class CattestForm(forms.ModelForm):