Django-fr

Forum

#1 24-01-2009 22:17:49

Séno Hervé Edorh
Membre
Inscription : 11-08-2010
Messages : 21

problème d'insertion

Bonsoir
je voudrais réaliser un tableau avec cellule. Je m'explique:
je travaille sur une application de gestion d'élève. j'aimerais saisir les
notes dans des cellules de tableau (à l'image d'excel). les élèves sont
générés à partir de la base de données

models.py

class Stagiaire(models.Model):
    stgr_id = models.AutoField(primary_key=True)
    nom_st = models.CharField(max_length=25, verbose_name='Nom')
    nomj_st = models.CharField(max_length=25,null=True,
                               blank=True,verbose_name='Nom de jeune fille')
    pnom_st = models.CharField(max_length=25, verbose_name=u'Prénom')
    matricule = models.CharField(max_length=10, unique=True)

class Examen(models.Model):
    exam_id = models.AutoField(primary_key=True)
    note = models.FloatField()
    stgr = models.ForeignKey(Stagiaire)
    stage = models.ForeignKey(Stage)




views.py

def note(request, ids):   //ids est le fk du stage  venant de la table Stage
de la base

    row = Stagiaire.objects.all()
    tab=''
    if request.method == 'POST':

            tab = request.POST
            //donc ici je ne sais pas quoi faire pour insérer en une fois
dans Examen

    return render_to_response('airfast/examen_note.html', {'row':row})


<form name="fm" method="post">

    <table align="center" class="zebra">
        <thead>
                   <tr>
                     <td>Nom</td>
             <td>Pr&eacute;nom</td>
             <td>&nbsp;Matricule&nbsp;</td>
                     <td>&nbsp;Note de devoir&nbsp;</td>
                   </tr>
                </thead>
        {% for item in row %}
        <tr>
          <td>{{ item.nom_st }}</td>
          <td>{{ item.pnom_st }}</td>
          <td>{{ item.matricule }}</td>
          <td><input type="text" size="6" name="note"/></td>

                </tr>
                {% endfor %}
    </table>
<p align="center"><input type="submit" value="enr&eacute;gistrer"/></p>
</form>

Hors ligne

#2 24-01-2009 22:54:12

Guillaume Sueur
Membre
Inscription : 11-08-2010
Messages : 22

Re : problème d'insertion

Bonjour,

Il y a à mon avis un problème conceptuel dans les modèles. Il en
faudrait trois :

Stagiaire, tel que présenté
Examen
    id
    nom
    date

et une table de relations notes
    id
    note
    exam = foreignKey(Examen)
    stag = foreignKey(Stagiaire)

puis transmettre dans le POST l'id examen et l'idstagiaire, ainsi que la
valeur de la note.

Guillaume

Séno Hervé Edorh a écrit :
> Bonsoir
> je voudrais réaliser un tableau avec cellule. Je m'explique:
>  je travaille sur une application de gestion d'élève. j'aimerais
> saisir les notes dans des cellules de tableau (à l'image d'excel). les
> élèves sont générés à partir de la base de données
>
> models.py
>
> class Stagiaire(models.Model):
>     stgr_id = models.AutoField(primary_key=True)   
>     nom_st = models.CharField(max_length=25, verbose_name='Nom')
>     nomj_st = models.CharField(max_length=25,null=True,
>                                blank=True,verbose_name='Nom de jeune
> fille')
>     pnom_st = models.CharField(max_length=25, verbose_name=u'Prénom')
>     matricule = models.CharField(max_length=10, unique=True)     
>
> class Examen(models.Model):
>     exam_id = models.AutoField(primary_key=True)
>     note = models.FloatField()
>     stgr = models.ForeignKey(Stagiaire)
>     stage = models.ForeignKey(Stage)
>
>   
>   
>
> views.py
>
> def note(request, ids):   //ids est le fk du stage  venant de la table
> Stage de la base
>   
>     row = Stagiaire.objects.all()
>     tab=''
>     if request.method == 'POST':                       
>           
>             tab = request.POST
>             //donc ici je ne sais pas quoi faire pour insérer en une
> fois dans Examen
>                           
>     return render_to_response('airfast/examen_note.html', {'row':row})
>   
>
> <form name="fm" method="post">
>       
>     <table align="center" class="zebra">
>         <thead>
>                    <tr>
>                      <td>Nom</td>
>              <td>Pr&eacute;nom</td>   
>              <td>&nbsp;Matricule&nbsp;</td>
>                      <td>&nbsp;Note de devoir&nbsp;</td>
>                    </tr>
>                 </thead>
>         {% for item in row %}
>         <tr>
>           <td>{{ item.nom_st }}</td>
>           <td>{{ item.pnom_st }}</td>
>           <td>{{ item.matricule }}</td>
>           <td><input type="text" size="6" name="note"/></td>
>         
>                 </tr>
>                 {% endfor %}   
>     </table>
> <p align="center"><input type="submit" value="enr&eacute;gistrer"/></p>
> </form>
> ------------------------------------------------------------------------
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#3 24-01-2009 23:35:35

Séno Hervé Edorh
Membre
Inscription : 11-08-2010
Messages : 21

Re : problème d'insertion

c'est ce que j'ai fait regarde bien mon model mon problème est que mes
varariable request.POST sont dynamiques qui  vient de la base, j'ai juste
omi de mettre la classe stage je dois normalement récupérer à partir de la
le id du stagiaire que j'insère dans les tables de la base. La clef du stage
je l'ai déjà car il provient d'une autre vue (ids) dans:

def note(request, ids):

Hors ligne

#4 25-01-2009 00:42:21

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : problème d'insertion

Salut,

J'ai peut etre mal compris le sens de ta question, ce que tu veux c'est
pouvoir insérer/éditer plusieurs entrée en une fois dans le formulaire ? Si
oui il faut voir du coté des Formset :

http://docs.djangoproject.com/en/dev/topics/forms/formsets/

+

Le Saturday 24 January 2009 22:17:49 Séno Hervé Edorh, vous avez écrit :
> Bonsoir
> je voudrais réaliser un tableau avec cellule. Je m'explique:
>  je travaille sur une application de gestion d'élève. j'aimerais saisir les
> notes dans des cellules de tableau (à l'image d'excel). les élèves sont
> générés à partir de la base de données
>
> models.py
>
> class Stagiaire(models.Model):
>     stgr_id = models.AutoField(primary_key=True)
>     nom_st = models.CharField(max_length=25, verbose_name='Nom')
>     nomj_st = models.CharField(max_length=25,null=True,
>                                blank=True,verbose_name='Nom de jeune
> fille') pnom_st = models.CharField(max_length=25, verbose_name=u'Prénom')
> matricule = models.CharField(max_length=10, unique=True)
>
> class Examen(models.Model):
>     exam_id = models.AutoField(primary_key=True)
>     note = models.FloatField()
>     stgr = models.ForeignKey(Stagiaire)
>     stage = models.ForeignKey(Stage)
>
>
>
>
> views.py
>
> def note(request, ids):   //ids est le fk du stage  venant de la table
> Stage de la base
>
>     row = Stagiaire.objects.all()
>     tab=''
>     if request.method == 'POST':
>
>             tab = request.POST
>             //donc ici je ne sais pas quoi faire pour insérer en une fois
> dans Examen
>
>     return render_to_response('airfast/examen_note.html', {'row':row})
>
>
> <form name="fm" method="post">
>
>     <table align="center" class="zebra">
>         <thead>
>                    <tr>
>                      <td>Nom</td>
>              <td>Pr&eacute;nom</td>
>              <td>&nbsp;Matricule&nbsp;</td>
>                      <td>&nbsp;Note de devoir&nbsp;</td>
>                    </tr>
>                 </thead>
>         {% for item in row %}
>         <tr>
>           <td>{{ item.nom_st }}</td>
>           <td>{{ item.pnom_st }}</td>
>           <td>{{ item.matricule }}</td>
>           <td><input type="text" size="6" name="note"/></td>
>
>                 </tr>
>                 {% endfor %}
>     </table>
> <p align="center"><input type="submit" value="enr&eacute;gistrer"/></p>
> </form>
>
> ---------------------------------------------------------------------------
>------------ Orange vous informe que cet  e-mail a ete controle par
> l'anti-virus mail. Aucun virus connu a ce jour par nos services n'a ete
> detecte.

Hors ligne

#5 25-01-2009 00:49:07

David Larlet
Membre
Inscription : 11-08-2010
Messages : 102

Re : problème d'insertion

Hello,

Le 25 janv. 09 à 00:42, David Thenon a écrit :

> Salut,
>
> J'ai peut etre mal compris le sens de ta question, ce que tu veux 
> c'est
> pouvoir insérer/éditer plusieurs entrée en une fois dans le 
> formulaire ? Si
> oui il faut voir du coté des Formset :
>
> http://docs.djangoproject.com/en/dev/topics/forms/formsets/

J'ai bien peur de ne pas tout avoir compris non plus mais voici un 
article récent de Malcolm sur le sujet si jamais c'est ça :
http://www.pointy-stick.com/blog/2009/01/23/advanced-formset-usage-django/

Bonne soirée,
David

Hors ligne

#6 25-01-2009 00:54:24

Séno Hervé Edorh
Membre
Inscription : 11-08-2010
Messages : 21

Re : problème d'insertion

non se n'est pas une histoire de formset, je m'explique encore. Je veux
entrer les notes des étudiants (stagiaires) dans des inputs je donne un
exemple

Marc philip <input type="text" name="note"/>
jules pascal <input type="text" name="note"/>
[...]
<input type="submit" value="enregistrer"/>

les noms viennent de la base pour les afficher (c'est dans mon views.py et
mon fichier html) c'est dynamique
      {% for intem in row %}
             intem.nom
           [...]
     {% endfor %}

le code ci dessus affiche les noms donc il faut que d'un seul clique
d'évènement du bouton submit les notes soient envoyé dans la table examen.

Hors ligne

#7 25-01-2009 01:02:56

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : problème d'insertion

Bah si tu veux enregistrer plusieurs input de "note" dans un unique
formulaire, t'es bien obligé d'utiliser un Formset non ?

Et sinon, après c'est juste un Form voire même un ModelForm un peu bidouillé
pour enregistrer dans Examen, en faisait passer dans chaque ligne de
note/instances du formset les ids nécessaires au foreignkey.


Le Sunday 25 January 2009 00:54:24 Séno Hervé Edorh, vous avez écrit :
> non se n'est pas une histoire de formset, je m'explique encore. Je veux
> entrer les notes des étudiants (stagiaires) dans des inputs je donne un
> exemple
>
> Marc philip <input type="text" name="note"/>
> jules pascal <input type="text" name="note"/>
> [...]
>  <input type="submit" value="enregistrer"/>
>
> les noms viennent de la base pour les afficher (c'est dans mon views.py et
> mon fichier html) c'est dynamique
>       {% for intem in row %}
>              intem.nom
>            [...]
>      {% endfor %}
>
> le code ci dessus affiche les noms donc il faut que d'un seul clique
> d'évènement du bouton submit les notes soient envoyé dans la table examen.
>
> ---------------------------------------------------------------------------
>------------ Orange vous informe que cet  e-mail a ete controle par
> l'anti-virus mail. Aucun virus connu a ce jour par nos services n'a ete
> detecte.

Hors ligne

#8 25-01-2009 01:13:13

Séno Hervé Edorh
Membre
Inscription : 11-08-2010
Messages : 21

Re : problème d'insertion

je vais revoir les formset alors car peut être que je ne m'explique pas bien
ou que je ne comprend pas bien les formset. Car ce que je comprend des
formset c'est pour faire les updates de donnée d'un formulaire. Je vais
relire tout ça demain car je suis dessus depuis 9h du matin.

Merci a tous

Hors ligne

Pied de page des forums