Partage
  • Partager sur Facebook
  • Partager sur Twitter

Liste des données dans un menu déroulant [PYTHON]

PYTHON / DJANGO

Sujet résolu
    9 décembre 2015 à 15:44:19

    Bonjour,

    Je suis nouveau dans le langage python donc je sais pas encore tout :)

    J'ai un projet que j'ai fini en php mais j'aimerais le refaire un python, malheureusement il y a des choses que je sais pas encore faire sous python donc je vous explique.

    J'utilise une base de données mysql en local sous un machine virtual. J'ai créé deux classe dans le fichier models.py

    • Class Automate(models.Models)
    • Class Plateau(models.Models)

    Dans la classe Plateau, j'insert des données comme le nom du site plateau (exemple : Paris, Lille, Nice) depuis l'interface admin de django

    J'aimerais avec la classe Automate, créer un menu déroulant avec models.SmallIntegerField() qui utilise les données de ma base de données

    car actuellement j'utilise models.SmallIntegerField(choices=AUTOMATE, default=0,max_length=255)

    PLATEAU = (

        (0, 'Paris),

        (1, 'Lille'),

        (2, 'Nice')

    )

    Merci :)

    -
    Edité par nsk57 9 décembre 2015 à 15:44:59

    • Partager sur Facebook
    • Partager sur Twitter
      10 décembre 2015 à 10:52:16

      Si j'ai bien compris tu souhaites une sorte de Combobox ? Pourquoi ne pas utilisé ModelChoiseField ou si t'es données son static ChoiceField ?

      Ou alors dans ton model si tu veux qu'un attribut est plusieurs valeur, tu peux aussi faire une classe dédiée, pour créer un relation ManyToMany. un petit exemple vite fais pour imager ce que je te dis ^^

      class Model1 (models.Model):
      	value = models.TextField(blank = True)
      
      class Model2(models.Model):
      	attribut = models.ManyToManyField(Model1,blank = True)



      -
      Edité par Myrens 10 décembre 2015 à 10:58:36

      • Partager sur Facebook
      • Partager sur Twitter
        10 décembre 2015 à 16:20:57

        Oui après mon poste, j'ai regardé un peu partout et j'ai trouvé le OneToOneField et aussi le ManyToManyField

        Mes données sont dans une base de données

        Donc oui, sur certaine classe, il me faut juste une liaison avec le OneToOneFieldqui fonctionne a merveille mais pour ma Class Plateau et Automate, il me faut un ManyToManyField, car un automate peut être sur plusieurs plateau mais quand j'utilise mon ManyToManyField, il me donne une erreur 

        class Plateau(models.Model):
        	plateau_name = models.CharField(_(u'Nom du plateau technique'), max_length=200)
        
        	def __unicode__(self):
               	 	return self.plateau_name
        
        class Automate(models.Model):
        	automate_name = models.CharField(_(u'Nom de l\'automate'), max_length=200)
        	automate_site = models.ManyToManyField(Plateau, db_column='automate_site', verbose_name="Plateau de l'automate")
        
        	def __unicode__(self):
               	 	return self.automate_name

         Erreur :

        ProgrammingError at /admin/cata/automate/add/

        (1146, "Table 'Projet_python.cata_projet_automate_site' doesn't exist")

        et donc je suis bloqué :(

        Ma base de données : Projet_python

        Ma table : cata_projet

        ma column de ma table : automate_site

        -
        Edité par nsk57 10 décembre 2015 à 16:24:03

        • Partager sur Facebook
        • Partager sur Twitter
          10 décembre 2015 à 16:44:57

          J'ai jamais eu cette erreur, mais j'ai fais un tour sur stackoverflow et c'est que normalement t'as fais manage.py syncdb avant d'avoir ajouté django.contrib.admin dans installed apps qui est dans le fichier setting.py. Essais de relancer syncdb. ^^

          -
          Edité par Myrens 10 décembre 2015 à 16:45:35

          • Partager sur Facebook
          • Partager sur Twitter
            10 décembre 2015 à 16:58:27

            A la création du projet, j'ai configuré ma base de données dans fichiers settings.py ensuite j'ai créer mon app cata puis j'ai effectué
            python manage.py syncdb

            mais si je me souvient bien, le ligne django.contrib.admin était déjà mise

            J'ai aussi essayé migrate mais ça n'a rien donné

            -
            Edité par nsk57 10 décembre 2015 à 16:59:18

            • Partager sur Facebook
            • Partager sur Twitter
              11 décembre 2015 à 9:36:42

              Comme dis plus haut je n'ai jamais eu cette erreur donc jamais eu a mis pencher :/ , j'éspéres que quel qu'un qui connait mieux django que moi pourra t'aider pour cette erreur ! si tu trouve la solution du problèmes je te laisse la poster je serais curieux de connaitre le pourquoi du comment :)
              • Partager sur Facebook
              • Partager sur Twitter

              Liste des données dans un menu déroulant [PYTHON]

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown