Bonjour,
Je pratique Django depuis peu, et je butte sur un détail qui doit m'échapper, cette tentative de CRUD fonctionne en création, et je peux lire aussi un enregistrement déja existant, mais en mise à jour ("submit") le système se plaint d'une QueryDict incomplète avec l'id manquant. J'ai essayé plein de trucs dans la limite de mes connaissances actuelle y compris d'introduire dans ma forme appellante l'id "idzz" dans le tuple de context, mais rien n'y fait.
Alors je viens humblement chercher de l'aide auprès de collègues, aguerris, d'avance merci !!
Voici l'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3MultiValueDictKeyError at /modifier/ "Key 'id' not found in <QueryDict: {}>"
//////////////////////////////////////////////////////////////
La classe qui mappe ma form
/////////////////////////////////////////////////
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 class artisan(models.Model): nom = models.CharField(max_length=100, unique=False) prenom = models.CharField(max_length=100, unique=False) qualite = models.CharField(max_length=100, unique=False) adresse1 = models.CharField(max_length=100, unique=False) adresse2 = models.CharField(max_length=100, unique=False) commune = models.CharField(max_length=100, unique=False) codepostal = models.CharField(max_length=100, unique=False) artisanat = models.TextField(blank=True) creation = models.DateField(auto_now_add = True) inscrit = models.BooleanField(default = True) photoA = models.CharField(max_length=100, unique=False) photoB = models.CharField(max_length=100, unique=False) photoC = models.CharField(max_length=100, unique=False) photoD = models.CharField(max_length=100, unique=False) photoE = models.CharField(max_length=100, unique=False) #imageArtisans = models.ImageField(blank = True, upload_to = 'imgArtisans') #Ajouter des photos dans notre propre API def __unicode__(self): return self.nom
Une partie de la view
/////////////////////////////////////////////////////////////////////
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 @login_required def creer(request): form = PrincipaleForme(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect('/') else: return render_to_response('creer.html',{'form' : form}) @login_required def modifier(request,id): idz = request.GET.__getitem__('id') aModifier = get_object_or_404(artisan,pk=request.GET['id']) form = PrincipaleForme(instance = aModifier) if request.method == 'POST': if form.is_valid(): form1 = PrincipaleForme(request.POST) form.save() return HttpResponseRedirect('/') else: form = PrincipaleForme(instance = aModifier) return render_to_response('modifier.html',{'form' : form,'idzz':aModifier.id})
Mon template:
///////////////////////////////////////////////////////
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 {%block content%} <h1>Modifier Artisan Num: {{id}}</h1><hr /> <form action = "." method="POST" enctype="multipart/form-data"> <table> {{form.as_table}} </table> <p><input type="submit" name="submit" value="Enregistrer"></p> </form> <a href = "/" ><div id ="unNom">RETOUR</div></a> {%endblock%}
Les Urls
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', (r'^admin/(.*)', admin.site.root), (r'^$', 'regional.cetteEtape.views.index'), (r'^creer/$', 'regional.cetteEtape.views.creer'), (r'^modifier/(.*)$', 'regional.cetteEtape.views.modifier'), )
Partager