不知道如何处理这个错误.如何使用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()
priority = models.CharField(max_length=1, choices=PRIORITY_CHOICES)
Run Code Online (Sandbox Code Playgroud)
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()
Run Code Online (Sandbox Code Playgroud)
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))
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
urls.py
(r'^add/$', 'QA.QAtool.views.add'),
(r'^addLala/$', 'QA.QAtool.views.addLala'),
Run Code Online (Sandbox Code Playgroud)
所以,我可以向DB添加数据,如果我采取下一步方式 - 只需添加
lala = Lala(id=None, name='teststep3', date='1943-12-12', priority='High')
lala.save()
Run Code Online (Sandbox Code Playgroud)
伙计们请帮我解决这个问题.我花了3天的时间试图弄清楚什么是错的,阅读关于djangoproject的文档等等.我真的不明白什么是错的,到处都看到form.save()作为标准方法,但不适合我.
Mik*_*ame 26
尝试使用ModelForm而不是Form:
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)
Run Code Online (Sandbox Code Playgroud)
在forms.py中:
from django import forms
class LalaForm(forms.ModelForm):
class Meta:
model = Lala
Run Code Online (Sandbox Code Playgroud)
然后在视图中,您现有的代码应该(几乎)覆盖它:
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
Run Code Online (Sandbox Code Playgroud)
在这里查看ModelForm的文档.
| 归档时间: |
|
| 查看次数: |
27941 次 |
| 最近记录: |