Partage
  • Partager sur Facebook
  • Partager sur Twitter

Django, formulaire avancé

Plusieurs choix multiples sur une même page

    21 juin 2024 à 21:19:57

    Salut à tous !

    Je suis en train de faire une petite app pour de la gesion d'appartement.

    La partie sur laquelle je travaille en ce moment est la gestion d'accessoire pour chaque appartement.
    J'ai déjà réussi à produire qql chose mais j'ai du mal lors de la validation de mon formulaire à gérer la correspondance entre accessoires et appartement.

    Comment devrais-je m'y prendre pour obtenir ce résultat : une page contenant une listes d'articles chacun possédant un status modifiable avec 3 / 4 options (Indispo, Dispo, Livré par exemple).

    Mes tables sont correctes je pense :

    Les accessoires

    Les appartements :

    Les accessoires d'appartements (ou l'on peut changer leur statu) :

    J'aimerais avoir des conseils sur l'approche à avoir pour réaliser ce genre de fonctionnalité, j'aimerais que le tout soit réactif et que le simple fait de sélectionner parmis le choix multiple déclenche l'enregistrement en base donnée.

    Merci de m'avoir lu !

    • Partager sur Facebook
    • Partager sur Twitter
      22 juin 2024 à 15:23:37

      Bonjour,

      Il faut un peu plus détailler... Quelle est la problématique ?

      • La construction du model mettant en relation appartements et accessoires
      • La configuration des vues
      • La création du formulaire
      • Le template
      • Les urls
      • ...

      indiquez ce que vous avez fait, voir mieux si cela est sur un projet GitHub ou GitLab c'est top !

      • Partager sur Facebook
      • Partager sur Twitter

      Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
      La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

        22 juin 2024 à 21:39:55

        Très bien je comprend. La construction du model mettant en relation appartements et accessoires m'a pas mal posé problème, mais c'est du passé. Je ne sais pas si c'est explicite mais en vous partageant les tables je pensais qu'on pourrait le voir.


        Mon problème réside à la manière de procéder pour la modification du status des accessoires. Comment emmener ca ? Via des formulaires unique pour chaque accessoire (via un formset ?), un formulaire unique qui comporterait tous les accessoires avec un bouton submit en bas de page pour valider les modifications ?
        Ou alors y'a t-il une autre approche que les formulaires ?

        Je viens de push sur une autre branche les modifs en lien avec cette implémentation dont voici le lien : https://github.com/SqlFR/appartools/tree/second

        J'ai glissé qqls commentaires pour que ca soit le plus explicite pour ceux qui regardent ;)

        P.S : un fichier fixutres.json est dispo pr de la data :)


        Merci pour votre temps !

        -
        Edité par Sqls 22 juin 2024 à 22:26:26

        • Partager sur Facebook
        • Partager sur Twitter
          23 juin 2024 à 11:05:10

          Bonjour,

          N'avez vous pas la possibilité de déduire la valeur du status de manière automatisée ? Si vous avez beaucoup d'accessoires, ça risque d'être très pénible, non ?

          • Partager sur Facebook
          • Partager sur Twitter

          Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
          La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

            23 juin 2024 à 12:20:40

            Bonjour,

            C'est en fait une forme de checklist, en effet il y aura beaucoup d'accessoires (entre 20 et 30). Lors de la préparation d'un logement, je "cocherais" le matériel préparé (prêt à être livré), puis l'idéal serait de pouvoir faire basculer cette liste de matériel prêt en matériel livré. Pourquoi le choix de faire une app et non de marquer ca sur un bout de papier ? Centraliser l'information pour que les personnes de mon équipe puissent suivre l'avancement de cette préparation et y participer.
            Et bien sûr par défaut nous sommes sur un status "Non pris en charge". 

            Merci pour ton retour

            Edit :

            C'est enfin fonctionnel !

            def sheets(request, apartment_id):
                apartment = get_object_or_404(Apartment, id=apartment_id)
                apartment_sheets = ApartmentSheets.objects.filter(apartment_id=apartment_id)
            
                if request.method == "POST":
                    for sheet in apartment_sheets:
                        form = SheetForm(request.POST, instance=sheet, prefix=str(sheet.id))
                        if form.is_valid():
                            form.save()
                    return redirect('check_arrangement:sheets', apartment_id=apartment_id)
            
                forms = [SheetForm(instance=sheet, prefix=str(sheet.id)) for sheet in apartment_sheets]
            
                context = {
                    'apartment': apartment,
                    'apartment_sheets': apartment_sheets,
                    'forms': forms
                }
                return render(request, 'check_arrangement/sheets.html', context)


            Un paramètre instance et prefix passer au formulaire pour les lier et les distinguer !

            -
            Edité par Sqls 23 juin 2024 à 15:19:51

            • Partager sur Facebook
            • Partager sur Twitter
              10 juillet 2024 à 9:19:09

              Met ce sujet en résolu, si c'est fonctionnel !
              • Partager sur Facebook
              • Partager sur Twitter

              Linaki, l'excellence garantie !

              My website

              Django, formulaire avancé

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              • Editeur
              • Markdown