Bonjour tout le monde,
Débutant avec Django, je bloque depuis quelques jours sur une idée simple, mais que je n'arrive pas à mettre en oeuvre pour le moment.
J'ai parcouru beaucoup de documentation, tutoriels et forums, mais pour le moment je ne trouve pas la solution.
Principe :
Un utilisateur remplit un formulaire (provenant d'un modèle) et enregistre le résultat dans la BDD si les champs sont bien remplis. Il accède ensuite à un template résumant les informations rentrées (en reprenant en faite les attributs du dernier objet créé en se basant sur le rowid le plus grand).
J'aimerais qu'il puisse avoir un bouton 'MODIFIER' si jamais il se rend compte qu'il doit effectuer une modification. Or, je ne sais pas du tout comment je peux modifier un formulaire déjà rempli et enregistré.
Autre méthode, je vais une sauvegarde avec
Je donne un récapitulatif, et là soit il modifie, soit il valide et cela s'enregistre dans la BDD.
Code : Sélectionner tout - Visualiser dans une fenêtre à part form.save(commit=False)
Voici mes différents codes (j'ai gardé que 2 champs pour faciliter le traitement, le formulaire faisant au final une dizaine de champs) :
Mon fichier models.py :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 #-*- coding: utf-8 -*- from django.db import models ###################################### # Choix à l'utilisateur pour le sexe # ###################################### SEX_CHOICES = ( ('M', 'Mâle'), ('F', 'Femelle') ) ########################################## # Choix à l'utilisateur pour la civilité # ########################################## TITLE_CHOICES = ( ('Mr', 'Monsieur'), ('Mlle', 'Mademoiselle'), ('Mme','Madame'), ('Dr','Docteur'), ('Me','Maître'), ) ################################################### # Création d'une table répertoriant tous les pays # ################################################### class Country(models.Model): code = models.CharField(max_length=3, null=False) # Example : 'FR' - 'US' pays = models.CharField(max_length=50, null=False) # Example : 'France' - 'Etats-Unis' def __unicode__(self): return '%s %s %s' % (self.id, self.code, self.pays) #################################################################################### # Création d'une table permettant de renseigner toutes les informations concernant # # les parents et reprise de celles des enfants # #################################################################################### class Identity(models.Model): lastname = models.CharField(max_length=30, verbose_name='Nom de famille') firstname = models.CharField(max_length=30, verbose_name='Prénom(s)') def __unicode__(self): return '%s %s' % (self.lastname, self.firstname)
Mon fichier forms.py :
Mon fichier views.py :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 #-*- coding: utf-8 -*- from django import forms from BirthCertificate.models import * class IdentityForm(forms.ModelForm) : class Meta : model = Identity fields = '__all__'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #-*- coding: utf-8 -*- from django.shortcuts import render, render_to_response from django.http import HttpResponseRedirect, HttpResponse from django.template import loader from .models import Identity, Country from .forms import IdentityForm def IdentityAccueil(request) : template = loader.get_template('accueil_Identity.html') return HttpResponse(template.render(request)) def IdentityFormulary(request) : form = IdentityForm(request.POST or None) if form.is_valid() : instance = form.save(commit=False) return HttpResponseRedirect('formulaire_traite') context = { "form" : form, } return render(request, 'form_Identity.html', context) def CompletedFormulary(request) : identity = Identity.objects.all().order_by("-id")[0] #identityAll = Identity.objects.filter(mail__icontains="datasystems") #i__contains renvoie tous les objets ayant le mot clé suivant context = { "identity" : identity, } return render(request, 'recapitulatif_identity.html',context)
Mon fichier form_Identity.html :
Et enfin mon fichier récapitulatif_identity.html :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <!--DOCTYPE html --> <html> <body> <h1 align="center"> Formulaire de fiche individuelle </h1> <form method='POST' action=''> {% csrf_token %} <h3> Partie contenant les informations de la fiche individuelle </h3> {{ form.as_ul }} <!-- {{ value|date:"%d/%m/%Y" }} --> <br></br> <input type ="submit" value="Valider la fiche individuelle" /> </form> </body> </html>
Pourriez-vous me dire de quelle façon je devrais procéder ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 <h2 align="center"> Votre formulaire a été validé </align> </h2> {% block content %} Votre personne porte le numéro : {{ identity.id }} <h3> Récapitulatif des données enregistrées : </h3> <li> Civilité : {{identity.title}}</li> <li> Nom : {{identity.lastname}}</li> <li> Prénom : {{identity.firstname}}</li> <li> Sexe : {{identity.sex}}</li> <li> Date de Naissance : {{identity.birthday}}</li> <li> Ville de Naissance : {{identity.birthcity}}</li> <li> Pays de Naissance : {{identity.birthcountry}}</li> <li> Nationalité : {{identity.nationality}}</li> <li> Profession : {{identity.job}}</li> <li> Adresse : {{identity.adress}}</li> <li> Ville : {{identity.city}}</li> <li> Code Postal : {{identity.zip}}</li> <li> Pays : {{identity.country}}</li> <li> Email : {{identity.mail}}</li> <li> Téléphone : {{identity.phone}}</li> <br></br> <!-- <ul> {% for item in identityAll %} <li>{{ item }}</li> {% endfor %} </ul> --> {% endblock %} <br></br> <form method='POST' action='/Identity/accueil'> {% csrf_token %} <input type ="submit" value="Retour fiche identité" /> </form> <form method='POST' action='/BirthCertificate/accueil'> {% csrf_token %} <input type ="submit" value="Création d'un acte de naissance" /> </form>
Bien cordialement,
Valentin
Partager