Django &引用;模型对象没有属性';保存'&引用;
我不知道该怎么处理这个错误。如何使用post方法从表单在SQL中添加数据 models.pyDjango &引用;模型对象没有属性';保存'&引用;,django,Django,我不知道该怎么处理这个错误。如何使用post方法从表单在SQL中添加数据 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()
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>
所以,我可以将数据添加到数据库中,如果我走下一条路,只需添加数据即可
lala = Lala(id=None, name='teststep3', date='1943-12-12', priority='High')
lala.save()
我真的不明白哪里出了问题,无论我在哪里看到form.save()都是标准方法,但对我来说不是。尝试使用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的文档。您真的想在视图中构造一个
AddTest
?没有表单操作…操作='/add'@mossplix:unrelated。检查该方法意味着不需要单独的URL。从文档中我可以看出,Django forms.Form没有save()方法-只有ModelForm实例有这个方法。这是合乎逻辑的-它应该保存什么和在哪里?是的,这一切-网址和形式的行动-我错过了,感谢创造它真的有帮助,我如何才能使用它。现在还有一个问题——当我按下上传按钮时,什么也没发生。“Waiting for localhost”仅此而已,屏幕上没有信息,只有控制台中的输出:/Library/Python/2.6/site packages/django/template/defaulttags.py:52:UserWarning:a{%csrf_token%}在模板中使用,但上下文没有提供值。这通常是由于不使用RequestContext造成的。warnings.warn(“模板中使用了{%csrf_token%}),但上下文未提供该值。这通常是由于未使用RequestCon@user474092-可能需要为此打开一个新问题。看起来您需要在请求上下文中放置一个csrf令牌,如图所示。
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