Bonjour à tous. J’ai réalisé une vue pour modifier les données d’une table. La vue affiche correctement l’enregistrement choisi. Mais lorque j’effectue des modifications, celles ci ne sont pas enregistrées quand je clique sur le bouton pour saver. Le formulaire se réaffiche avec les mêmes informations initiales, tout comme si je n’avais rien changé. Tous les formulaires de modification que je crée, présentent ce dysfonctionnement. Tout porte à croire que le formulaire n’est pas validé, et je ne sais vraiment pas pourquoi il ne l’est pas. ça fait plusieurs jours que je me lime les dents sur cette situation et ça me donne l’insomnie. Merci de m’aider. Voici les codes:
Le modèle de données:
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Oev(models.Model): Diocese = models.ForeignKey(Diocese,on_delete=models.CASCADE) CuOev = models.CharField(max_length=80, primary_key=True,default=GenererCodeUnique('oev')) Code_oev =models.CharField(max_length=100,blank=True, null=True,default='') Nom = models.CharField(max_length=80,blank=True, null=True,default='') Prenom = models.CharField(max_length=150,blank=True, null=True,default='') date_Nais = models.DateField(blank=True, null=True) Lieu_Nais = models.CharField(max_length=150,blank=True, null=True,default='') chSexe = ( ('M', 'Masculin'), ('F', 'Féminin'), ) Sexe= models.CharField(max_length=1, choices=chSexe, blank=True,null=True) |
J’ai créé un formulaire simple pour ce modèle de données:
1 2 3 4 | class OevForm(forms.ModelForm): class Meta: model=Oev fields = '__all__' |
et voici la vue en question. Je récupère la clé de l’enregistrement choisi à partir d’une liste, dans la variable "cu"
1 2 3 4 5 6 7 8 9 10 | def OevUpdate(request,cu,template_name = 'AppDatas/oev_form.html'): unoev = get_object_or_404(Oev, pk=cu) form = OevForm(instance=unoev) if form.is_valid(): un=form.save(commit=False) un.Diocese_Id=form.Diocese.CuDiocese un.CuOev=form.CuOev un.save() return redirect('listedesOev') return render(request, template_name, {'form': form}) |
j’appelle cette vue dans le fichier urls avec la ligne suivante:
1 | url(r'^oev/upd/(?P<cu>[a-zA-Z0-9_]+)$', views.OevUpdate, name='oev-detail'), |
Tout me parait bien claire, mais chaque fois que j’apporte des modifications et que je valide, le formulaire est réinitialisé sur les valeurs originales de l’élément affiché sans sauver ces modifications. J’ai beau cherché, je ne vois pas où se trouve le bug.
Merci de votre aide.