Bonjour!
Alors voila, j'ai commencé a travailler avec un certains schema pour ma base de données, mais maintenant j'aimerais modifier ma base de données afin de la rendre plus 'légère" disons.
Donc j'ai modifié mon model et mon formulaire, mais depuis je n'arrive plus du tout a sauvegarder mon formulaire dans ma base de données et je suis totalement perdu :/ !
Donc, si quelqu'un de meilleur/plus expérimenté que moi avait une idée de pourquoi mon travail ne marche pas, j'avoue que je serais plutôt intéréssé.
Voila mon code :
La view :
mon formulaire:
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64 def proposal_create(request): """ Add a new proposal in the table Proposals Manage the webpage new_proposal :var keywords: Permet de récupérer tout les mots-clefs existant pour pouvoir les afficher ensuite. """ keywords = Keywords.objects.all() # send the list of existing keywords if request.method == 'POST': if 'submit' in request.POST : form = ProposalForm(request.POST, request.FILES) if form.is_valid(): proposal = form.save(commit=False) try: name_bdd = User.objects.get(username = request.POST['pi_login']) if name_bdd.firstName != request.POST['pi_first_name'] or name_bdd.lastName != requ\ est.POST['pi_last_name']: raise except: return render(request, 'new_user.html') try: form.check_call(request) form.check_co_pi_exist(request, proposal) proposal.CALL = settings.AO_CALL messages.warning(request, "0.0") proposal.save() #L'erreur vient de ce .save la !! / ! \ messages.warning(request, "0.1") messages.info(request, "Proposal enregistré !") proposal.user_link.add(name_bdd) form.add_co_pi_bdd(request, proposal) form.save_id_pi(proposal, request) except: messages.warning(request, "Une erreur est survenue pendant l'enregistrement du Prop\ osal") else: messages.error(request, "Le Formulaire que vous voulez soumettre n'est pas complet") elif 'save' in request.POST: form = ProposalFormSave(request.POST, request.FILES) if form.is_valid(): MemoryProposal = form.save(commit=False) MemoryProposal.CALL = settings.AO_CALL MemoryProposal.save() messages.info(request, "Proposal sauvegardé !") elif 'reset' in request.POST : form = ProposalForm() elif 'add_member' in request.POST: return render(request, 'new_user.html') else: form = ProposalForm() return render(request, 'new_proposal.html', {'form': form})
mon model:
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 class ProposalForm(forms.ModelForm): """ Form for submit a new proposal """ class Meta: model = Proposal propKeys = forms.ModelMultipleChoiceField(queryset=Keywords.objects.all()) pi_first_name = forms.CharField(max_length = 100) pi_last_name = forms.CharField(max_length = 100) pi_login = forms.CharField(max_length = 100) co_pi = forms.CharField(max_length = 100) justification = forms.FileField(label='select a file', help_text='max. 1 Mb') fields = ['proposalID', 'title', 'category', 'abstract', 'propKeys', 'justification'] error_messages = { 'title': { 'required': ("This champ is required"), }, }
De plus, quand la méthode .save() ne marche pas. N'y a t'il pas moyen de récupérer un message d'erreur nous donnant des précisions sur pourquoi le save na pas marché ?
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 class Proposal(models.Model): """ define Proposal table for "submit" Proposal """ user_link = models.ManyToManyField('webportal.User') CALL = models.CharField(max_length = 100) # primary key for proposal table proposalID = models.AutoField(primary_key=True) # fields for proposal table : Proposal Information title = models.CharField(max_length = 100) category = models.CharField(max_length = 50, choices = CATEGORY) abstract = models.TextField(null=True) propKeys = models.ManyToManyField('Keywords', related_name="proposalKeys", blank=True) # fields for proposal table : Team #pi_first_name = models.CharField(max_length = 100) #pi_last_name = models.CharField(max_length = 100) #pi_login = models.CharField(max_length = 100) #co_pi = models.CharField(max_length = 100, blank=True) pi_id = models.IntegerField(blank=True) co_pi_id = models.CharField(max_length = 100, blank=True) # fields for proposal table : Target List #target_name = models.CharField(max_length = 100) #obs_type = models.CharField(max_length = 100) # fields for proposal table : Scientific Justification justification = models.FileField( upload_to = 'test_import', max_length=100, null=True, blank=True) def __str__(self): return self.title
Merci d'avance pour vos réponses !![]()
Partager