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 :

Impossible de save mon formulaire


Sujet :

Django Python

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut 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 : 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 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
     
     
    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 : 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
    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 !

  2. #2
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    à toi

    Si tu es avec une version récente de Django, la première chose à faire après avoir modifier tes models c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    python manage.py makemigrations
    python manage.py migrate
    Comme tu ne précise pas si tu as fait ceci je préfère te repasser les deux commandes.

    Concernant les erreurs, normalement tu devrais avoir une page t'expliquant "clairement" ce qui se passe (pas )

    Sinon, tu as essayé en mettant dans ton template

    @ +


    J
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

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

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut
    Hey! Merci de ta réponse. Alors,

    Oui j'ai vérifié ma base de données les migrations ont bien été faites, pas de probleme de ce côté.

    Hum j'ai essayé avec form.errors duu coup.

    Ainsi dans ma vue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    except:
                        messages.warning(request, form.errors)
                        print(form.errors)
    et ainsi dans on template:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      <div>
        <p>{{ form.errors }}</p>
        {{ form.errors }}
      </div>
    Et dans les deux cas, rien ne s'affiche, rien ne se passe. Etrange nan ?

    Je rajoute mon template d'ailleurs, ca donnera quelques infos supplémentaire peut-etre.

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
     
    {% extends "skeleton.html" %}
    {% load staticfiles %}
     
     
    {% block content %}
     
    <div class="container">
     
      <div>
        <p>{{ form.errors }}</p>
        {{ form.errors }}
      </div>
        <form class="form-horizontal" action="{% url 'proposal:proposal.views.proposal_create' %}" method="\
    post">
            {% csrf_token %}
            <fieldset>
     
                <div class="bs-example"> <!-- Tabs for separation of form -->
     
                    <ul class="nav nav-tabs"> <!-- Name of Tabs -->
                      <li class="active"><a data-toggle="tab" href="#sectionA">Proposal Information</a></li\
    >
                        <li><a data-toggle="tab" href="#sectionB">Team</a></li>
                        <li><a data-toggle="tab" href="#sectionC">Target List</a></li>
                        <li><a data-toggle="tab" href="#sectionD">Scientific Justification</a></li>
                    </ul> <!-- Name of Tabs -->
     
                    <div class="tab-content"> <!-- Content of Tabs -->
     
                        <div id="sectionA" class="tab-pane fade in active"> <!-- Content of tab Proposal In\
    formation -->
     
                          <h3>Proposal Information</h3>
                          <!-- Text input for title field-->
                          <div class="form-group">
                            <label class="col-md-4 control-label" for="title">Title**</label>
                            <div class="col-md-6">
                              <input id="title" name="title" type="text"
                                     placeholder="Title of your proposal"
                                     class="form-control input-md">
                              {% for error in form.title.errors %}
                              {{ error }}
                              {% endfor %}
                            </div>
                          </div>
     
                            <!-- Select Basic for category field -->
                            <div class="form-group">
                                <label class="col-md-4 control-label" for="category">Category</label>
                                <div class="col-md-6">
                                    <select id="category" name="category" class="form-control">
                                        <option value="category 1">Normal Proposal</option>
                                        <option value="category 2">Specific Proposal</option>
                                        <option value="category 3">High priority Proposal</option>
                                        <option value="category 3">Low priority Proposal</option>
                                    </select>
                                </div>
                            </div>
     
                            <!-- Textarea for abstract-->
                            <div class="form-group">
                                <label class="col-md-4 control-label" for="abstract">Abstract*</label>
                                <div class="col-md-4">
                                    <textarea class="form-control" id="abstract" name="abstract"
                                              placeholder="short presentation about the goal of your propos\
    al"
                                              class="form-control input-md"></textarea>
                                    {% for error in form.abstract.errors %}
                                    {{ error }}
                                    {% endfor %}
     
                                </div>
                            </div>
                            <!-- Select Multiple for keywords -->
                            <div class="form-group">
                                <label class="col-md-4 control-label" for="propKeys">Keywords</label>
                                <div class="col-md-6">
                                    <select id="keywords" name="keywords" class="form-control"
                                            multiple="multiple">
                                        {% for keyword in keywords %}
                                        <option value={{keyword.id}}>{{keyword.keyword}}</option>
                                        {% endfor %}
                                    </select>
                                </div>
                            </div>
                        </div><!-- Content of tab Proposal Information -->
     
                        <div id="sectionB" class="tab-pane fade"> <!-- Content of tab Team -->
     
                            <h3>Team</h3>
                            <!-- Text input for name of PI-->
                            <div class="form-group">
                              <!--<section id="Ca"-->
                              <div class="container">
                                <div class="panel panel-primary">
                                  <div class="panel-heading">
                                    <strong font-weight="bolder"><h4>PI Part:</h4></strong>
                                  </div>
                                </div>
                              </div>
                                <label class="col-md-4 control-label" for="pi_first_name">PI_First_Name**</\
    label>
                                <div class="col-md-6">
                                    <input id="pi_first_name" name="pi_first_name" type="text"
                                           placeholder="Firstname of principal investigator(PI)"
                                           class="form-control input-md" required="">
                                    {% for error in form.pi_first_name.errors %}
                                    {{ error }}
                                    {% endfor %}
     
                                </div>
                                <label class="col-md-4 control-label" for="pi_last_name">PI_Last_Name**</la\
    bel>
                                <div class="col-md-6">
                                    <input id="pi_last_name" name="pi_last_name" type="text"
                                           placeholder="Lastname of principal investigator(PI)"
                                           class="form-control input-md" required="">
                                    {% for error in form.pi_last_name.errors %}
                                    {{ error }}
                                    {% endfor %}
     
                                </div>
                                <label class="col-md-4 control-label" for="pi_login">PI_login**</label>
     
                                <div class="col-md-6">
                                  <input id="pi_login" name="pi_login" type="text"
                                         placeholder="Login/username of principal investigator(PI)"
                                         class="form-control input-md" required="">
                                  {% for error in form.pi_login.errors %}
                                  {{ error }}
                                  {% endfor %}
                                </div>
                            </div>
     
                            <!-- Text input for name of co PI -->
                            <div class="container">
                              <div class="panel panel-primary">
                                <div class="panel-heading">
                                  <strong font-weight="bolder"><h4>Co_PI Part:</h4></strong>
                                </div>
                              </div>
                            </div>
                            <div class="form_group">
                                <label class="col-md-4 control-label" for="co_pi">Co_PI</label>
                                <div class="col-md-6">
                                    <input id="co_pi" name="co_pi" type="text"
                                           placeholder="Ex: Julia Chabazian, Will Smith, Philipe Aris"
                                           class="form-control input-md">
                                    </br>
                               </div>
                            </div>  <!--Pas sur pour cette balise peut etre 1 de trop-->
                        </div> <!-- Content of tab Team -->
     
                        <div id="sectionC" class="tab-pane fade"> <!-- Content of tab Target List -->
     
                          <h3>Target List</h3>
                        </div> <!-- Content of tab Target List -->
     
                        <div id="sectionD" class="tab-pane fade"> <!-- Content of tab Scientific Justificat\
    ion -->
     
                          <h3>Scientific Justification</h3>
     
                          <div class="form-group">
                            <label class="col-md-4 control-label" for="justification">Scientific Justificat\
    ion</label>
                            <div class="col-md-6">
                              <input id="justification" name="justification" type="file">
                            </div>
                          </div>
     
                        </div> <!-- Content of tab Scientific Justification -->
     
                    </div> <!-- Content of Tabs -->
     
                </div> <!-- Tabs for separation of form -->
     
     
                <div class="form-group">
                    <label class="col-md-4 control-label" for="submit"></label>
                    <div class="col-md-8">
                        <button id="submit" name="submit" class="btn btn-primary">
                          Submit</button>
                        <button id="save" name="save" class="btn btn-primary">
                          Save</button>
                        <button id="reset" name="reset" class="btn btn-warning">
                          Reset</button>
                    </div>
                </div><!-- Button (Double) to save or reset the form-->
     
            </fieldset>
        </form><!-- Form of the proposal -->
        <div>
          <br>
          <p>* = Obligatory for 'submit' / ** = Obligatory for 'submit' and 'save'</p>
        </div>
     
     
        <form class="form-horizontal" action="{% url 'proposal:proposal.views.proposal_create' %}" method="\
    post"><!--Form of add_member button-->
          {% csrf_token %}
          <div class="form-group">
            <label class="col-md-4 control-label" for="add_member"></label>
            <div class="col-md-8">
              <button method="post" href="{% url 'webportal:new_user' %}" id="add_member" name="add_member"\
     class="btn btn-success">add_member</button>
            </div>
          </div><!-- Button to add a new_member in bdd-->
        </form><!--Form of add_member button-->
     
    </div> <!-- container -->
    Voila, j'espere qu'avec un oeil sur tout ca il y'a moyen de retrouver mon probleme :/

    Mais je n'arrive franchement pas a comprendre, si mon formulaire passe form.is_valid(), si form.save() marche aussi. pourquoi je ne peux pas le sauvegarder dans ma bdd par la suite. Ca na pas de sens. a quoi cela pourrait-il etre lié ?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut
    EUREKA ! J'ai trouvé la solution a mon probleme.

    Cependant je suis pas sur de comprendre a 100% pourquoi.

    D'après moi, cela marche maintenant, car après avoir fait "proposal = form.save(commit=False)" mon objet proposal devait comporter les champs "pi_id" et "co_pi_id" de mon model et au moment de "proposal.save()" ces champs etait vide et donc la méthode .save() échouait.
    Cependant d'une je ne suis pas sur que cela soit vraiment ca, et de deux; si c'est cela, pourquoi mn objet proposal portait les champs "pi_id" et "co_pi_id" ? Ils ne sont pourtant pas renseignés dans la partie "fields=[...]" de mon formulaire et cela nee marchait pas plus quand je spécifiais ces champs dans la partie "exclude=[...]" de mon formulaire.

    Est-ce parceque après "proposal = form.save(commit=False)" mon objet proposal hérite de tout les champs de mon model ? Si oui, j'ai pourtant précisé dans mon model "blank = True" pour les champs en question, donc pourquoi n'auraient-ils pas pu rester vides ?

    Bref, si une personne pouvait me donner quelques précisions surt tout ca, ca serait vraiment cool !

    Voici la partie de ma view qui a changée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                    try:
                        form.check_call(request)
                        form.check_co_pi_exist(request, proposal)
                        proposal.CALL = settings.AO_CALL
                        form.save_id_pi(proposal, 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 Propo\
    sal")
    Sur ce, j'arrete la pour aujourd'hui, je pose mon cerveau sur le clavier et je vous souhaite une bonne soirée !

  5. #5
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par 123alban2007 Voir le message
    Ils ne sont pourtant pas renseignés dans la partie "fields=[...]" de mon formulaire et cela nee marchait pas plus quand je spécifiais ces champs dans la partie "exclude=[...]" de mon formulaire.
    Attention : au niveau de forms.py c'est la possibilité d'utiliser ou non tes champs dans ton template que tu gères. Pas le fait qu'ils doivent ou non être renseignés.

    Citation Envoyé par 123alban2007 Voir le message
    Est-ce parceque après "proposal = form.save(commit=False)" mon objet proposal hérite de tout les champs de mon model ? Si oui, j'ai pourtant précisé dans mon model "blank = True" pour les champs en question, donc pourquoi n'auraient-ils pas pu rester vides ?
    Attention (bis ) : il faut bien faire la différence entre blank et null : https://docs.djangoproject.com/fr/1.8/ref/models/fields
    Si tu ne précises pas que tes champs peuvent être null (par défaut null est à false), alors tu devras forcément les renseigner (chaine de caractères pleine ou vide), sinon tu auras un souci dans l’enregistrement au niveau de ta BDD.
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut
    Attention : au niveau de forms.py c'est la possibilité d'utiliser ou non tes champs dans ton template que tu gères. Pas le fait qu'ils doivent ou non être renseignés.
    D'accord, donc si je comprends bien, même si je n'utilise pas un champ, ce champ et toujours tout de même présent. Donc si je ne le renseigne pas , il est normal qu'il y ait un probleme ?

    ttention (bis ) : il faut bien faire la différence entre blank et null : https://docs.djangoproject.com/fr/1.8/ref/models/fields
    Si tu ne précises pas que tes champs peuvent être null (par défaut null est à false), alors tu devras forcément les renseigner (chaine de caractères pleine ou vide), sinon tu auras un souci dans l’enregistrement au niveau de ta BDD.
    Donc, si je veux pouvoir laisser un champ vide et faire une entrée dans ma bdd il faut que pour le champ en question j'active a la fois "blank=True" et "null=True", si je dit pas de bêtises ? ^^

  7. #7
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Citation Envoyé par 123alban2007 Voir le message
    D'accord, donc si je comprends bien, même si je n'utilise pas un champ, ce champ et toujours tout de même présent. Donc si je ne le renseigne pas , il est normal qu'il y ait un probleme ?
    En fait si tu n'utilise pas un champs, c'est à dire que tu l'appelles pas dans forms.py, alors tu ne pourras pas l'utiliser dans ton template. Mais ça ne veut pas dire que le champs en question n'est pas appelé / contrôlé lors de l'enregistrement dans ta BDD.

    Tu as (entre autre) trois solutions pour ton cas :
    • mettre les champs en question en blank = true et null = true ;
    • afficher tous les champs présents dans ta BDD et ainsi permettre à l'utilisateur de renseigner ceux-ci ;
    • ne pas les afficher et les gérer après ton proposal = form.save(commit=False)
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut
    OK, Merci pour ton aide !

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/08/2011, 11h13
  2. [ZF 1.9] Autoloader : impossible de charger mon formulaire
    Par Invité dans le forum MVC
    Réponses: 8
    Dernier message: 01/12/2009, 14h39
  3. C#impossible de fermer mon formulaire.
    Par hotsizzle dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/10/2008, 13h11
  4. Réponses: 6
    Dernier message: 06/06/2006, 11h46
  5. [VBA-A]impossible de revoir mon formulaire masqué!
    Par eultartuffe dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/04/2006, 13h35

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