2010-11-24 3 views
11

Не знаю, что делать с этой ошибкой. Как добавить данные в SQL из форм с помощью метода post?объект не имеет атрибута 'save' Django

models.py

class Lala(models.Model): 
    PRIORITY_CHOICES = ( 
     (0, '1'), 
     (1, '2'), 
     (2, '3'), 
     (3, '4'), 
    ) 
    name = models.CharField(max_length=20) 
    date = models.DateField() 
    priority = models.CharField(max_length=1, choices=PRIORITY_CHOICES) 

Views.py

def add (request): 
    if request.method == 'POST': # If the form has been submitted... 
     form = AddLala(request.POST) # A form bound to the POST data 
     if form.is_valid(): 
      newform = form.save() 

Form.py

class AddLala(forms.Form): 
    PRIORITY_CHOICES = ( 
     (0, '1'), 
     (1, '2'), 
     (2, '3'), 
     (3, '4'), 
    ) 
    name = forms.CharField(max_length=100) 
    date = forms.DateField() 
    priority = forms.CharField(max_length=1, widget=forms.Select(choices=PRIORITY_CHOICES)) 

add.html

<form target="upload_frame" action="" method="post" enctype="multipart/form-data" > 
{% csrf_token %} 
    {{ form.as_p }}<br> 
    <input type="submit" name="submit" value="Upload" id="submit"> 
</form> 

urls.py

(r'^add/$', 'QA.QAtool.views.add'), 
    (r'^addLala/$', 'QA.QAtool.views.addLala'), 

Итак, я могу добавить данные в БД, если я иду в следующий путь - Просто добавьте

lala = Lala(id=None, name='teststep3', date='1943-12-12', priority='High') 
lala.save() 

Ребята, пожалуйста, помогите мне с этим вопросом. Я потратил 3 дня, пытаясь выяснить, что случилось, прочитав документацию по djangoproject и т. Д. Я действительно не понимаю, что не так, везде я вижу form.save() как стандартный метод, но не для меня.

+1

Вы действительно хотели построить «AddTest» в представлении? – 2010-11-24 21:27:00

+0

нет формы action ... action = '/ add' – mossplix 2010-11-24 21:30:16

ответ

20

Попробуйте использовать ModelForm вместо формы:

class Lala(models.Model): 
    PRIORITY_CHOICES = ( 
     (0, '1'), 
     (1, '2'), 
     (2, '3'), 
     (3, '4'), 
    ) 
    name = models.CharField(max_length=20) 
    date = models.DateField() 
    priority = models.CharField(max_length=1, choices=PRIORITY_CHOICES) 

В forms.py:

from django import forms 

class LalaForm(forms.ModelForm): 
    class Meta: 
     model = Lala 

Тогда в представлении существующий код должен (довольно много) покрыть:

def add (request): 
    if request.method == 'POST': # If the form has been submitted... 
     form = LalaForm(request.POST) # A form bound to the POST data 
     if form.is_valid(): 
      form.save() # saves a new 'Lala' object to the DB 

Ознакомьтесь с документами для ModelForm here.

Смежные вопросы