Объект не имеет атрибута '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() как стандартный метод, но не для меня.
Ответы
Ответ 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 здесь.