我尝试将 django poll 应用程序应用于我自己的应用程序(一个 IMC 计算器),以改进和构建一个小项目,作为我在 python/django 中的第一步。
我尝试保存我在 accueil.html 上的第一个表单的数据:
<form action="" method="post">
<table>
{{ form.as_table }}
</table>
<input type ="submit" value="Submit">
</form>
这是我的forms.py:
from django import forms
class IndividuDataForm(forms.Form):
nom = forms.CharField(max_length=100)
prenom = forms.CharField(max_length= 100)
anniversaire = forms.DateField()
taille = forms.IntegerField()
poids = forms.IntegerField()
这是我的models.py:
from django.db import models
from django.forms import ModelForm
class Individu(models.Model):
nom = models.CharField(max_length=100)
prenom = models.CharField(max_length= 100)
anniversaire = models.DateField()
taille = models.IntegerField()
poids = models.IntegerField()
def __unicode__(self):
return self.nom
class ImcResultat(models.Model):
individu = models.ManyToManyField(Individu)
imc = models.IntegerField()
date_imc = models.DateField()
class IndividuForm(ModelForm):
class Meta:
model = Individu
class ImcResultatForm(ModelForm):
class Meta:
model = ImcResultat
最后我的 *views.py* 在这里: 当我尝试将数据从表单保存到数据库时,问题出在第 13 行 * a = cd.create() *。
from django.shortcuts import render_to_response
from django.http import HttpResponse, HttpResponseRedirect
from models import Individu, ImcResultat
from forms import IndividuDataForm
def accueil(request):
if request.method == 'POST':
form = IndividuDataForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
a = cd.create() **#this is the problem**
return HttpResponseRedirect('/accueil/page2/')
else:
form = IndividuDataForm()
return render_to_response('accueil.html', {'form':form})
def page2(request):
return render_to_response('page2.html')
我猜是在 views.py 的第一部分,我的函数不能正常工作,它没有将表单保存在数据库中。 def accueil(请求):
if request.method == 'POST':
form = IndividuDataForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
a = cd.create() **#this is the problem**
return HttpResponseRedirect('/accueil/page2/')
检查表单是否有效后,我清理了表单中的数据,然后尝试保存它。 我得到了这个错误:
Exception Type: AttributeError
Exception Value: 'dict' object has no attribute 'create'
我猜它来自字典,但我从来没有在我的代码中使用 { } 作为字典列表。 所以一直没有思路,一直卡在学习的过程中。
感谢您的帮助,我希望在我的第一篇 stackoverflow 帖子中我没有犯太多错误。
最佳答案
您应该使用 ModelForm,它将自动定义字段以匹配模型上的字段。然后您可以调用 form.save()
直接从表单创建实例。
关于python - 'dict' 对象没有属性 'create'/'save',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766617/