Django-fr

Forum

#1 10-01-2012 16:55:18

ael666
Membre
Inscription : 22-11-2011
Messages : 15

relation d'une liste déroulante à une autre

Bonjour,

j'essaye de créer un formulaire sur des tables oracles

dans ce formulaire j'ai 3 listes déroulantes basées sur une même table et qui correspondent à trois champs différents

espece
typo
habitat

une espèce peut être présente sur plusieurs typo et donc plusieurs habitats.

pour l'instant je suis arrivé  avec des boucles a injecté les valeurs de champs sur chaque liste et ainsi faire une ou plusieurs sélection.
et j'aimerais que ces listes ce mettent à jour.
Par exemple si je sélectionne une espèce la liste déroulante typo se met à jour et me donne les typo correspondant à cet espèce.

j'espère être suffisamment clair.
je débute sur python et django alors je ne me rends pas compte si j'en demande trop mais quelques pistes serait les bienvenues.

merci d'avance

Hors ligne

#2 10-01-2012 17:08:10

Keabard
Membre
Inscription : 12-09-2011
Messages : 5

Re : relation d'une liste déroulante à une autre

Bonjour,

ce que tu demandes c'est un formulaire dynamique, pour cela il faudrait
que tu utilises du Javascript avec de l'AJAX. En gros, AJAX va permettre
à ton formulaire de demander des informations au serveur sans avoir à
recharger la page.

En gros, quand tu choisiras une espèce dans ta liste déroulante, la page
va demander au serveur la liste des typos qui correspondent à cette
espèce, pour ensuite te proposer la liste déroulante de ces typos.

Il va falloir que tu créés une view qui prend en argument une espèce et
qui retourne une HttpResponse avec la liste des typos associés. Ensuite,
en Javascript, tu appelles l'URL qui correspond à cette view, via AJAX,
puis tu mets à jour la liste des typos, toujours en Javascript.

Je pense que le plus simple pour faire ce code Javascript, c'est
d'utiliser jQuery.

N'hésite pas si t'as d'autres questions.


Thomas Simonnet



Le 10/01/2012 16:55, ben a écrit :
> Bonjour,
>
> j'essaye de créer un formulaire sur des tables oracles
>
> dans ce formulaire j'ai 3 listes déroulantes basées sur une même table
> et qui correspondent à trois champs différents
>
> espece
> typo
> habitat
>
> une espèce peut être présente sur plusieurs typo et donc plusieurs
> habitats.
>
> pour l'instant je suis arrivé  avec des boucles a injecté les valeurs de
> champs sur chaque liste et ainsi faire une ou plusieurs sélection.
>   et j'aimerais que ces listes ce mettent à jour.
> Par exemple si je sélectionne une espèce la liste déroulante typo se
> met à jour et me donne les typo correspondant à cet espèce.
>
>   j'espère être suffisamment clair.
> je débute sur python et django alors je ne me rends pas compte si j'en
> demande trop mais quelques pistes serait les bienvenues.
>
> merci d'avance
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
>

Hors ligne

#3 11-01-2012 10:45:01

ael666
Membre
Inscription : 22-11-2011
Messages : 15

Re : relation d'une liste déroulante à une autre

salut!

ok merci de ton aide

je ne connais ni java et encore moins ajax,

donc je reviendrais peut être poster un message :-)

merci

Hors ligne

#4 11-01-2012 11:06:49

Keabard
Membre
Inscription : 12-09-2011
Messages : 5

Re : relation d'une liste déroulante à une autre

Salut,

ne confonds pas Javascript et Java, ils n'ont de commun que le début de
leur nom.

Thomas

Le 11/01/2012 10:45, ben a écrit :
> salut!
>
> ok merci de ton aide
>
> je ne connais ni java et encore moins ajax,
>
> donc je reviendrais peut être poster un message :-)
>
> merci
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
>

Hors ligne

#5 11-01-2012 11:13:03

Bruno Renié
Membre
Inscription : 11-08-2010
Messages : 52

Re : relation d'une liste déroulante à une autre

2012/1/11 Keabard <gouki46 _AT_ hotmail.com>:
> Salut,
>
> ne confonds pas Javascript et Java, ils n'ont de commun que le début de leur
> nom.

http://www.flickr.com/photos/schrader/3779250024/sizes/o/

Hors ligne

#6 11-01-2012 13:41:10

ael666
Membre
Inscription : 22-11-2011
Messages : 15

Re : relation d'une liste déroulante à une autre

oui, je connaissais la différence. c'était une abréviation qui pouvait porter à confusion, c'est vrai.


je ne sais pas si je prend la bonne direction alors je poste mes deux code

le html

<form method="post">
  
      <select name="search_espece[]" multiple=true>&nbsp;&nbsp;
        <option value="">-- Sélectionnez une espèce --</option>
      {% for ESPECE in latest_espece_list %}
        <option value="{{ ESPECE.ID}}">{{ ESPECE.LB_NOM}}</option>
    {% endfor %}
             
            
        <input type="submit" value="Search">&nbsp;&nbsp;<input type="reset" value="Reset"></input>        
      </select>
    </form>
    
    
  <form methode="post">

    <select name="search_typo[]" multiple>&nbsp;&nbsp;
        <option value="">--Sélectionnez une typo ----</option>
      {% for ESPECE in latest_typo_list %}
        <option value="{{ ESPECE.TYPO}}">{{ ESPECE.TYPO}}</option>
    {% endfor %}
    <br>
    <br>
    
    
    
    
      <input type="submit" value="Search">&nbsp;&nbsp;<input type="reset" value="Reset"></input>
    
   </select>
   </form>
   
   <form methode="post">

    <select name="search_HABITAT[]" multiple>&nbsp;&nbsp;
        <option value="">--Sélectionnez un habitat ----</option>
      {% for ESPECE in latest_HABITAT_list %}
        <option value="{{ ESPECE.HABITAT}}">{{ ESPECE.HABITAT}}</option>
    {% endfor %}
    <br>
    <br>
    
    
    
    
      <input type="submit" value="Search">&nbsp;&nbsp;<input type="reset" value="Reset"></input>
    
   </select>

et le python

def accueil(request):
  
    latest_espece_list = ESPECE.objects.values('LB_NOM').order_by('LB_NOM').distinct('LB_NOM')
    latest_typo_list = ESPECE.objects.values('TYPO').order_by('TYPO').distinct('TYPO')
    latest_HABITAT_list = ESPECE.objects.values('HABITAT').order_by('HABITAT').distinct('HABITAT')
        
    return render_to_response('accueil.html', {'latest_espece_list': latest_espece_list,'latest_typo_list': latest_typo_list,'latest_HABITAT_list': latest_HABITAT_list})

j'ai essayé d'ajouter une condition >>>
if 'search_espece' in request.POST:
            dd = request.POST['search_espece']

et en ajoutant un filter.(champ= dd) à  latest_typo_lis mais cela me renvoie une erreur CSRF token missing or incorrect.

et là je dois avouer que je m'embrouille ?

Hors ligne

#7 24-01-2012 15:44:41

ael666
Membre
Inscription : 22-11-2011
Messages : 15

Re : relation d'une liste déroulante à une autre

salut!

j'ai essayé d'écrire un code javascipt mais je ne suis pas sûr de la façon d'intégrer jquery à ma page ni ou mettre le .js (dans le même dossier que le .html?) étant donné que je n'ai aucune erreur en retour et que mes listes ne se mette pas à jour



sinon pour le code

$(document).ready(function(){
 
 
                $("#select_espece").change(function(){ 
                           if($(this).val() != ""){
 
                               var esp = $(this).val();
 
                                $.ajax({
                                   url: "views.py",
                                   global: false,
                                   type: "POST",
                                   data: "ESPECE.ID="+esp,
                                   dataType: "html",
                                   success: function(msg){
                                  $("#select_typo").empty();
                                     $("#select_typo").html(msg);
 
                                $.ajax({
                                   url: "views.py",
                                   global: false,
                                   type: "POST",
                                   data: "ESPECE.ID="+esp,
                                   dataType: "html",
                                   success: function(msg){
                                  $("#select_habitat").empty();
                                     $("#select_habitat").html(msg);
                                 }});
                                 
                                 
                                 
                                 }
           }
        );
                       }
               });

là encore je ne suis pas sûr de l'url puisque dans la plupart des tuto que j'ai lu cela appelait un fichier php


merci de votre aide

Dernière modification par ael666 (24-01-2012 15:49:26)

Hors ligne

Pied de page des forums