Partage
  • Partager sur Facebook
  • Partager sur Twitter

Impossible d'utiliser ManyToManyField

Sujet résolu
    11 décembre 2015 à 14:47:37

    Bonjour,

    Il m'est impossible d'utiliser ManyToManyField. Je vous explique

    J'ai deux classes

    • class Automate(models.Model):
    • class Plateau(models.Model):

    Un automate peut être sur différent plateau. Quand j'utilise ManyToManyField, une erreur apparaît mais je sais pas pourquoi

    ProgrammingError at /admin/cata/automate/3/
    
    (1146, "Table 'cata.cata_automate_automate_site' doesn't exist")
    
    Request Method: 	GET
    Request URL: 	http://127.0.0.1:8000/admin/cata/automate/3/
    Django Version: 	1.8
    Exception Type: 	ProgrammingError
    Exception Value: 	
    
    (1146, "Table 'cata.cata_automate_automate_site' doesn't exist")
    
    Exception Location: 	/usr/local/lib/python2.7/dist-packages/MySQLdb/connections.py in defaulterrorhandler, line 36
    Python Executable: 	/usr/bin/python
    Python Version: 	2.7.6
    Python Path: 	
    
    ['/home/julien/Projets/catalogue',
     '/usr/lib/python2.7',
     '/usr/lib/python2.7/plat-i386-linux-gnu',
     '/usr/lib/python2.7/lib-tk',
     '/usr/lib/python2.7/lib-old',
     '/usr/lib/python2.7/lib-dynload',
     '/usr/local/lib/python2.7/dist-packages',
     '/usr/lib/python2.7/dist-packages',
     '/usr/lib/python2.7/dist-packages/PILcompat',
     '/usr/lib/python2.7/dist-packages/gtk-2.0',
     '/usr/lib/python2.7/dist-packages/ubuntu-sso-client']
    
    Server time: 	ven, 11 Déc 2015 13:46:06 +0000

    Si vous avez une idée, je suis preneur :)



    • Partager sur Facebook
    • Partager sur Twitter
      11 décembre 2015 à 15:19:16

      j'y connais rien en Django, mais il te sort l'erreur suivante:

      (1146, "Table 'cata.cata_automate_automate_site' doesn't exist")


      Donc dans ton code ne te serais-tu pas trompé (enlever un automate peut-être)? ligne 1146? Je sais pas :o

      • Partager sur Facebook
      • Partager sur Twitter
      Précepte: Le mieux est l'ennemi du bien
        11 décembre 2015 à 15:25:51

        je pense vraiment que le soucie viens de t'as base de donnée, tu as essayé de la recréer , refaire une migration , ect... ?

        juste comme ça tu utilises quel version de Django et python?

        -
        Edité par Myrens 11 décembre 2015 à 15:31:16

        • Partager sur Facebook
        • Partager sur Twitter
          11 décembre 2015 à 15:35:07

          Actuellement dans ma base de données cata, il y a 2 tables 

          • cata_plateau
          • cata_automate

          Dans cata_plateau, il y a 4 plateaux (Paris, Lille, Nice, Metz)

          cala_plateau :

          id (auto_increment), plateau_name

          Dans cata_automate, rien

          cata_automate :

          id (auto_increment), automate_name, automate_site

          Mes deux classe dans le fichier models.py de l'application cata

          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, blank=True, db_column='automate_site', verbose_name="Plateau de l'automate")
          
          	def __unicode__(self):
                 	 	return self.automate_name

          J'ai essayé de créer un nouveau projet et une nouvelle application avec une nouvelle base de données pour essayer le ManyToManyField. J'ai eu le même problème

          Version Django :

          1.8.0 "final"

          -
          Edité par nsk57 11 décembre 2015 à 15:36:27

          • Partager sur Facebook
          • Partager sur Twitter
            11 décembre 2015 à 15:41:54

            tu peux essayais de trouver une solution ici 

            • Partager sur Facebook
            • Partager sur Twitter
              11 décembre 2015 à 15:45:34

              Justement. En reprenant l'erreur de Django, on voit bien les 3 parties que tu décrit:

              "cata.cata_automate_automate_site"


              On a bien cata, ensuite cata_automate et enfin automate_site. Le problème (je pense, n'y connaissant rien) vient de la séparation entre les 2 derniers (tu mets un underscore _ pour les séparer). Est-ce vraiment la bonne façon d'accéder à l'information? Ne faudrait-il pas plutôt mettre à la place un point:

              "cata.cata_automate.automate_site"

              -
              Edité par Olygrim 11 décembre 2015 à 15:45:56

              • Partager sur Facebook
              • Partager sur Twitter
              Précepte: Le mieux est l'ennemi du bien
                11 décembre 2015 à 16:14:00

                Oui je suis d'accord mais le chemin c'est Django qui le fait tout seul et donc je sais pas si je peux changer le chemin
                • Partager sur Facebook
                • Partager sur Twitter
                  11 décembre 2015 à 16:57:33

                  J'ai trouvé la solution

                  ManyToManyField va lié deux table ensemble et pour se faire, il a besoin d'une table intermédiaire

                  la table ici sera :

                  cata_automate_automate_site

                  de la base cata

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Impossible d'utiliser ManyToManyField

                  × 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