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 :

Mise à jour formulaire après saisie dans une liste


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Par défaut Mise à jour formulaire après saisie dans une liste
    Bonjour,

    J'utilise Django depuis peu et je n'arrive pas à résoudre un problème :
    Après avoir sélectionné une valeur dans une liste, je souhaiterais remplir certains champs du formulaire.

    Dans mon exemple, j'ai un model "prestation" dans lequel je référence pour chaque artiste ces données : titre_spectacle, nb_artiste, nb_terchnicien, duree_spectacle et cachet_ttc.

    J'ai un formulaire pour créer un devis, dans lequel je vais saisir via une liste, l'artiste concerné.
    Suite à cette saisie, je voudrais remplir les champs "titre du spectacle", "nb d'artistes", "nb de terchniciens", "durée du spectacle" et "cachet ttc", récupérés depuis la table prestation.

    J'espère être compréhensible. Je peux donner les détails du code pour être plus précis.
    Merci,
    Fabien

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Il y a énormément de manière de créer un formulaire... quelle est là vôtre ?

    Si je comprend bien vous souhaitez dynamiser la possibilité de compléter tels ou tels champs selon un choix de l'utilisateur. À part utiliser JavaScript et jQuery par exemple, peu d'autres solutions.
    Il est possible de le faire depuis Django, mais ça va demander de valider l'ensemble des champs en correspondance avec le choix utilisé en cliquant sur un bouton.

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Par défaut
    Déjà merci pour ce retour rapide.
    Je mets quelques détails.

    Le model "Prestation":
    Nom : Capture d’écran 2024-02-26 132705.png
Affichages : 245
Taille : 56,4 Ko

    le model "Devis" :
    Nom : Capture d’écran 2024-02-26 132726.png
Affichages : 249
Taille : 129,2 Ko

    La vue pour créer le devis :
    Nom : Capture d’écran 2024-02-26 132744.png
Affichages : 233
Taille : 43,7 Ko

    Le DevisForm :
    Nom : Capture d’écran 2024-02-26 132803.png
Affichages : 231
Taille : 57,1 Ko

    Et le gabarit de la création de devis:
    Nom : Capture d’écran 2024-02-26 132824.png
Affichages : 224
Taille : 44,6 Ko

    Une copie d'une partie du formulaire :
    Nom : Capture d’écran 2024-02-26 133600.png
Affichages : 220
Taille : 18,7 Ko

    Voilà, merci beaucoup :-)

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Déjà tu ne respectes pas les règles du forum, pas de copie d'écran, il y a des balises codes ( bouton # ) adaptées pour cela, et puis tu ne confirmes pas ce que je dis dans mon précédent post, à savoir si on souhaite un moyen dynamique (JavaScript) ou plutôt de validation (Django).

    Car je ne vois pas en quoi on empêcherait par défaut selon le choix dans une liste de compléter des champs.

    T'as une erreur ? Bref je peux pas tester, donc si tu me dis pas ce que tu vois ou ce qui se passe, je peux pas deviner...

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Par défaut
    Bonsoir,
    Désolé pour le non respect des règles. C'est la première fois que je demande de l'aide sur du code et j'avais aucune autre idée pour transmettre le contenu.
    Merci pour l'info, j'utiliserais le # la prochaine fois.

    Pour revenir sur ma demande d'aide:
    Je n'ai aucun problème de fonctionnement sur mon formulaire ou dans mes programmes.
    Je souhaite juste ajouter une "nouvelle fonctionnalité" : mettre à jour les champs du formulaire suite à la saisie de la liste "artiste".

    Je ne sais absolument pas "si on souhaite un moyen dynamique (JavaScript) ou plutôt de validation (Django)" puisque je ne sais pas du tout comment faire pour intercepter l'évènement de saisie de la liste "artiste".

    Dans le formulaire "Devis", une fois l'artiste saisie via la liste, je souhaite récupérer les informations relatives à l'artiste dans la table "Prestation", et remplir les champs correspondants du formulaire "Devis" en cours.

    J'ai déjà fait cela dans d'autres outils de développement et langages, mais là je ne vois pas comment faire.
    J'espère être plus compréhensible. Merci d'avance.
    Fabien

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Citation Envoyé par nfechange
    Dans le formulaire "Devis", une fois l'artiste saisie via la liste, je souhaite récupérer les informations relatives à l'artiste dans la table "Prestation", et remplir les champs correspondants du formulaire "Devis" en cours.

    J'ai déjà fait cela dans d'autres outils de développement et langages, mais là je ne vois pas comment faire.
    Connaissez-vous AJAX ? Je pense que c'est ce qu'il vous faut...

    Après ne pouvant tester, mon aide s'arrête là...

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Connaissez-vous AJAX ? Je pense que c'est ce qu'il vous faut...

    Après ne pouvant tester, mon aide s'arrête là...
    Bonjour fred1599, merci pour ta réponse. Non je ne connais pas AJAX. Je regarde ça.
    Je peux faire un plus petit projet de test et le partager sur GIT si tu veux tester.

  8. #8
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Tout à fait, il y a plus qu'à partager le code ça sera plus simple pour aider.

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Tout à fait, il y a plus qu'à partager le code ça sera plus simple pour aider.
    Merci, c'est vraiment cool !!
    https://github.com/FabNeuville/test_django_liste.git

  10. #10
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Merci c'est plus simple à expliquer, c'est fonctionnel avec ajax après tests.

    Pour commencer l'objectif : Lors de la sélection d'un artiste dans le formulaire de devis, j'ai automatiquement récupéré et intégré dans le champ du formulaire la valeur du nombre d'artiste Nb artiste.

    Pour cela voici mes modifications,

    Ajouter dans devis_create.html le code ajax,

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script>
        document.addEventListener("DOMContentLoaded", function() {
     
            document.querySelector("#id_artiste").addEventListener("change", function() {
                var artisteId = this.value;
                fetch(`/get-nb-artistes/${artisteId}/`)
                    .then(response => response.json())
                    .then(data => {
                        document.querySelector("#id_nb_artiste").value = data.nb_artistes;
                    });
            });
        });
     
    </script>

    Ajouter dans views.py,

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    from django.http import JsonResponse
    from .models import Prestation
     
     
    def get_nb_artistes(request, artiste_id):
        nb_artistes = Prestation.objects.get(id=artiste_id).nb_artiste
        return JsonResponse({'nb_artistes': nb_artistes})

    Ajouter dans urls.py

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    path('get-nb-artistes/<int:artiste_id>/', views.get_nb_artistes, name='get-nb-artistes'),

    Lors de la sélection d'un artiste j'ai le nombre d'artistes automatiquement inséré dans le formulaire du devis (vérifié dans la base de données, c'est correct).

    Plus qu'à comprendre et refaire la même chose pour chacun des champs, ou mieux récupérer en une seule fonction l'ensemble de tes champs

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Février 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 13
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    Lors de la sélection d'un artiste j'ai le nombre d'artistes automatiquement inséré dans le formulaire du devis (vérifié dans la base de données, c'est correct).

    Plus qu'à comprendre et refaire la même chose pour chacun des champs, ou mieux récupérer en une seule fonction l'ensemble de tes champs
    C'est carrément énorme la vitesse à laquelle tu m'as répondu et gérer le besoin !!!
    C'est exactement la fonctionnalité que je souhaitais.
    Merci beaucoup, tu m'as été d'une aide très précieuse.
    Fabien

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/02/2020, 10h28
  2. [AC-2013] Mise à jour de case à cocher après choix dans une liste déroulante
    Par Faustine_ dans le forum VBA Access
    Réponses: 11
    Dernier message: 12/07/2018, 13h38
  3. Réponses: 4
    Dernier message: 22/06/2009, 12h12
  4. [ODBC] Garder une saisie après sélection dans une liste déroulante
    Par nawak.seb dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 27/08/2008, 14h48
  5. Réponses: 16
    Dernier message: 04/07/2008, 08h07

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