Impossible de save mon formulaire
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 :
Code:
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 formulaire:
Code:
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"),
},
} |
mon model:
Code:
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 |
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é ?
Merci d'avance pour vos réponses ! :)