2012-02-28 2 views
0

Может кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно?Ошибка Django: объект 'function' не имеет атрибута 'save'

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

Traceback:

AttributeError в/bsmain/cattest/

'функция' объект не имеет атрибута 'сохранить'

Метод запроса: POST Запрос URL: http://127.0.0.1:8000/bsmain/cattest/ Джанго Версия: 1.3.1 Тип Исключение: AttributeError Исключение Значение:

'функция' объекта не имеет атрибута 'сохранить'

Exception Расположение: /home/bill/workspace/boatsite/../boatsite/bsmain/views.py в cattest, строка 50 Python Исполняемые:/USR/бен/питон Пыть 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() 
Смежные вопросы