J'essaie d'appliquer l'application django poll à ma propre application (une calculatrice IMC) pour améliorer et construire un petit projet pour mes premiers pas en python/django.
J'essaie de sauvegarder les données de mon premier formulaire qui est sur accueil.html :
<form action="" method="post">
<table>
{{ form.as_table }}
</table>
<input type ="submit" value="Submit">
</form>
Voici mon 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()
Voici mon 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
Et enfin, mon * views.py * est ici : le problème se situe à la ligne 13 * a = cd.create() * lorsque j'essaie d'enregistrer les données du formulaire dans la base de données.
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')
Je pense que c'est sur la première partie du views.py que ma fonction ne fonctionne pas bien, elle n'enregistre pas le formulaire dans la base de données. 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/')
après avoir vérifié que le formulaire est valide, je nettoie les données dans le formulaire puis j'essaie de le sauvegarder. et j'ai obtenu cette erreur :
Exception Type: AttributeError
Exception Value: 'dict' object has no attribute 'create'
Je suppose qu'il s'agit d'un dictionnaire, mais je n'ai jamais utilisé { } dans mon code pour une liste de dictionnaires. Je n'ai donc aucune idée et je suis bloqué dans le processus d'apprentissage.
Merci pour votre aide et j'espère que pour mon premier post stackoverflow je n'ai pas fait trop d'erreurs.