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 :

enregistrer des models lier par etapes


Sujet :

Django Python

  1. #1
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut enregistrer des models lier par etapes
    Bonjour voici ma problematique sur django que je parvien pas a trouver une solution,
    j'ai 3 models:
    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
    class lieux(models.Model):
        gps =models
        wilaya = models.CharField(max_length=20)
        ville = models.CharField(max_length=20)
        rue = models.CharField(max_length=30)
     
    class Course(models.Model):
        user_driver = models.ForeignKey(User, on_delete=models.CASCADE)
        time_creation =models.DateField()
        time_depart =models.DateField()
        nbr_places = models.IntegerField()
        trajet_course = models.ManyToManyField(lieux,through='trajet',related_name='U_P',blank=True)
        participents_course = models.ManyToManyField(User, through='participents',related_name='U_P',blank=True)
     
    class trajet(models.Model):
        type_c = [('D','depart'),('AV','arrivé'),('AT','arret')]
        type_course = models.CharField(max_length=10,choices=type_c)
        num_arret = models.IntegerField()
        arret=models.ForeignKey(lieux, on_delete=models.CASCADE)
        course_arret = models.ForeignKey(Course, on_delete=models.CASCADE)

    je veux cree une course par etape je remplie la table course apres l'user peux rempire la table lieux et trajet en meme temps,mais je coince , je me suis dit qu'il aurait peutetre une fonction dans la vue qui peux manipuler les {%block%} dans les template mais je trouve pas,j'ai pensais avoire trouver une piste avec les signeux mais peu de tutos qui explique en detail le truc ,merci de bien m'orienter a une doc ou je peux trouver solution a mon probleme ou m'éclaircir sur le sujet,
    voici un essai de vue que j'ai fait mais c'est pourri:
    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
    def c_course(request):
     
        user =request.user
        form=create_course(request.POST or None)
        course=Course()
        form2=lieux_form(request.POST or None)
     
     
     
        if form.is_valid():
            course.time_creation=timezone.now()
            course.time_depart=form.cleaned_data['Depart']
            course.user_driver=user
            course.nbr_places=form.cleaned_data['Places']
            course.save()
     
     
            if form2.is_valid:
                lieux=lieux()
                lieux.wilaya=form.cleaned_data['wilaya']
                lieux.ville=form.cleaned_data['ville']
                lieux.save()
     
     
     
            return HttpResponseRedirect('/course')
     
     
     
        return render (request,'new_course.html',{'f':form,'f2':form2})

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Je ne comprends pas votre problème.

    A la base, il y a deux soucis à résoudre:
    • comment remplir les différentes tables,
    • fabriquer l'interface utilisateur qui le permette sans trop de difficultés,


    Pour le premier soucis, c'est d'abord une question "base de données": enlevez Django, faites des tables semblables avec sqlite en direct et essayez de les remplir avec une séquence de questions/réponses saisies à la console.

    Si chaque étape est matérialisée par une fonction, vous allez avoir des informations à propager/récupérer d'une étape à l'autre et éventuellement matérialiser çà avec un petit automate à états finis.

    Avec Django vous êtes dans le mode HTTP qui est "stateless" et les informations qui doivent "persister" d'une requête à l'autre se stockent dans la session utilisateur (côté serveur) ou dans des cookies (côté client) ou se pense complètement autrement si vous voulez du ReST.

    Cette étape là vous donne les contraintes techniques qui devront être prises en compte par l'interface utilisateur.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut
    moi mon probleme est que je veux afficher la forme lieux sur le template et la form course disparet dés que save() le model course,

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Citation Envoyé par animalx123 Voir le message
    moi mon probleme est que je veux afficher la forme lieux sur le template et la form course disparet dés que save() le model course,
    La forme lieux? Déjà pour que ce soit une "form", il faudrait que ce soit une classe héritée de forms.Form (ou autres ModelForm). Pour l'instant, vos classes sont juste des models.Model....

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut
    oui j'ai oublier de vous montrer mes class forms mais ce n'est pas ca le probleme mais sur la maniere d'enregister ca dans le meme template et une seul vue just par etape,je m'explique :
    pour que l'utilisateur cree une course il doit entrer sur la page et la forme course apparait,apres avoir cliquer sur submit la form lieux et trahet apparetront sur le template,et la on fini la creation de la course,comme vous l'ai dit plus haut ,j'ai penser a retourner a la fin de (i form.is_valid ) un truc comme (return block),mais je sais pas si ca existe,et j'ai chercher dans le coté des signeau de django mais je trouve pas ceque je trouve (c'est une fonctionalité qui conserne les trigger ),mais l'ideal est de rien enregistrer avant le submit final pour cree les 3 models a la fois car si un utilisateur commance par enregistrer une course et ne va pas jusque au bout,on aura un row course sans interer dans la base de donnée,et si on stock tout dans le template avant de valider,d'ou on va avoir les id pour cree la table de m2m (trajet),voila je vous ai mis toute ma problematique sur le tapis pour bien la comprendre, merci de votres aides

  6. #6
    Membre régulier Avatar de animalx123
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Janvier 2015
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 148
    Points : 96
    Points
    96
    Par défaut
    merci de ne pas me repondre

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/03/2015, 18h32
  2. Enregistrer des données entrées par des formulaires dans un fichier XML
    Par amina.hamerelain dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 17/06/2014, 18h48
  3. Enregistrer des données introduite par l'utilisateur
    Par cp-08jhu dans le forum Android
    Réponses: 2
    Dernier message: 13/01/2012, 09h46
  4. Réponses: 3
    Dernier message: 09/06/2009, 10h08
  5. Comment empécher l'enregistrement des images par le navigateur ?
    Par zouetchou dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 15/08/2006, 23h14

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