Подтвердить что ты не робот

Объект не имеет атрибута 'save' Django

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

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() как стандартный метод, но не для меня.

4b9b3361

Ответ 1

Попробуйте использовать 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 здесь.