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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
form.save(commit=False)
Je donne un récapitulatif, et là soit il modifie, soit il valide et cela s'enregistre dans la BDD.


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 :

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__'
Mon fichier views.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
#-*- 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 :

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>
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
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>
Pourriez-vous me dire de quelle façon je devrais procéder ?

Bien cordialement,

Valentin