IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Django: Impossible de laisser un champ vide dans un Formulaire


Sujet :

Django Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Points : 22
    Points
    22
    Par défaut Django: Impossible de laisser un champ vide dans un Formulaire
    Bonjour !

    Bon me voila bien embeter.

    Dans le cadre de mon projet Django, il y 'a un formulaire ou je propose deux options: 1) 'Submit' -> Permet de soumettre definitivement le formulaire et le faire rentrer dans ma bdd

    2) 'Save' -> Permet de sauvegarder une partie du formulaire déja rempli sans le soumettre ( Afin de pouvoir continuer a le remplir ultérieurement).

    Voici le code de ma 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
    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
     
    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(lastName = request.POST['pi_last_name']) #risque de bug avec bdd v\
    ide !                                                                                                              
                        if name_bdd.firstName != request.POST['pi_first_name']: #risque de bug avec bdd vide           
                            raise
                    except:
                        return render(request, 'new_user.html')
     
                    try:
                        form.check_co_pi_exist(request)
                        proposal.save()
                        messages.info(request, "Proposal enregistré !")
                        proposal.user_link.add(name_bdd)
                        form.add_co_pi_bdd(request, proposal)
            	except:
                        messages.warning(request, "Une erreur est survenue pendant l'enregistrement du Proposal")
                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():
     
                    try:
                        form.check_no_save(request)
                    except:
                        messages.error(request, "Une erreur est survenue. Vous aller etre redirigé vers la page new_pr\
    oposal")
            	return render(request, 'new_proposal.html', {'keywords': keywords})
                    proposal = form.save()
                    proposal.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', {'keywords': keywords})
    celui de mon formulaire de Save:

    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 ProposalFormSave(forms.ModelForm):
        """                                                                                      
        Form for save a new proposal                                                             
        """
        class Meta:
            model = MemoryProposal                                  
            justification = forms.FileField(label='select a file', help_text='max. 1 Mb')
            fields = ['proposalID', 'title', 'category', 'abstract', 'propKeys', 'pi_first_name'\
    , 'pi_last_name', 'co_pi', 'justification']
     
        def check_no_save(self, request):
            """                                                                                  
            If user try to "save" a proposal but have more than one proposal save. Return a warn\
    ning message and redirect to new_proposal page                                               
            """
     
            name_bdd = MemoryProposal.objects.get(pi_last_name = request.POST['pi_last_name'])
            if name_bdd.pi_first_name == request.POST['pi_first_name']:
               messages.warning(request, "Vous avez déja apparament un proposal sauvegardé a vo\
    tre nom.")
                return render(request, 'new_proposal.html')
    Et son modele:

    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
     
    class MemoryProposal(models.Model):
        """                                                                                      
        define Proposal table for "save" Proposal                                                
        """
        #user_link = models.ManyToManyField('webportal.User')#Doit-on lier les Memory a un user?
     
        # primary key for proposal table                                                         
        proposalID = models.AutoField(primary_key=True)
     
        # fields for proposal table : Proposal Information                                       
        title    = models.CharField(max_length = 100, blank=True)
        category = models.CharField(max_length = 50, choices = CATEGORY, blank=True)
        abstract = models.TextField(null=True, blank=True)
        propKeys = models.ManyToManyField('Keywords', related_name="memoryproposalKeys",
                                          blank=True)
     
        # fields for proposal table : Team                                                       
        pi_first_name    = models.CharField(max_length = 100, blank=True)
        pi_last_name     = models.CharField(max_length = 100, blank=True)
        co_pi            = 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)
    Voila voila. Maintentant mon probleme!

    Il s'avere que quand j'appuie sur le bouton save de ma page, si tout les champs ne sont pas remplis. un gentil message " Please fill out this field" apparait pour me dire de remplir me champs laissés vides !

    J'aimerai bien pouvoir me débarasser de ce blocage et pouvoir enregistré mon formulaire que mes champs soit vides ou non.

    De plus je ne comprends pas. Dans mon model, j'ai pourtant bien précisé "blank=True" . Mon formulaire hérite bien de mon model ? Dois-je préciser dans mon formulaire aussi required=False ? Mais comment faire , les champs de mon formulaire ne sont-il pas liés au champ fields=['...','...'..] ?

    Bref, je suis un paumé ^^. Pourquoi ne puis-je pas laisser les champs de mon formulaire vide ?

    Si jamais vous avez une réponse, vous voila les bienvenus !

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par 123alban2007 Voir le message
    Bref, je suis un paumé ^^. Pourquoi ne puis-je pas laisser les champs de mon formulaire vide ?

    Si jamais vous avez une réponse, vous voila les bienvenus !
    Soit blank=True ne fonctionne pas du tout, soit c'est parce que vous avez des clefs "bizarres" (avec lesquelles çà ne va pas fonctionner). Ce sont des propositions "testables": a vous de jouer.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    Bonjour, merci pour la réponse !

    J'avais marqué la discussion comme résolue. Mon probleme etait enfaite vraiment idiot.

    Je me focalisé sur Django ne comprenant pas pourquoi ca marchait pas alors que mon probleme venait de mon template. Les balises des champs de mon formulaire ayant l'option ' required="" '

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Masquer un champ vide dans un formulaire access
    Par anassyto dans le forum IHM
    Réponses: 2
    Dernier message: 25/06/2013, 16h24
  2. champ vide dans une formulaire
    Par nadia68 dans le forum IHM
    Réponses: 18
    Dernier message: 28/04/2008, 08h51
  3. Champ vide dans un formulaire
    Par moilou2 dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/02/2008, 12h19
  4. champ vide dans un formulaire
    Par nadia68 dans le forum IHM
    Réponses: 9
    Dernier message: 12/06/2007, 00h56
  5. Total de champs vide dans un formulaire
    Par gretch dans le forum Langage
    Réponses: 2
    Dernier message: 09/05/2006, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo