python - 'dict' 对象没有属性 'create'/'save'

标签 python django django-models django-forms

我尝试将 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/

相关文章:

python - 在 Python 的 PDFrw 中使用流?

python - nginx 到静态页面的路径错误

在 PostgreSQL 中进行全文搜索的 Django 模型架构

django - 如何从 Django Form FileField 中提取文件对象

python - 如何在 Django 模型上存储字典?

python - 用于格式化字符字段数据的自定义模型字段

python - 将 R 代码转换为 Python 代码

python - 同情类型错误 : cannot determine truth value of Relational when dumping to YAML

python - 生成器到列表转换的不同速度

python - Django ckeditor上传图片