/ / Erreur lors de l'ajout d'un ManyToManyField dans Django - Python, Django, Modèles Django, Django-Orm, Django-Evolution

Erreur lors de l'ajout de ManyToManyField dans Django - python, django, django-models, django-orm, django-evolution

Ok, j’ai récemment posté une question concernant une erreur lors de l’ajout d’un ManyToManyField

Les modèles sont ceux ci-dessous

class MagicType(models.Model):

name = models.CharField(max_length=155)
parent = models.ForeignKey("self", null=True, blank=True)

class Spell(models.Model):

name = models.CharField(max_length=250, db_index=True)
magic_words = models.CharField(max_length=250, db_index=True)
magic_types = models.ManyToManyField(MagicType)

C’est l’erreur que j’obtiens lors de la migration avec Django-évolution:

AttributeError: "ManyToManyField" object has no attribute "_get_m2m_column_name"

Alors, existe-t-il un moyen de définir manuellement un ManyToManyField sans le spécifier dans les deux modèles? disons avec un modèle comme celui-ci

class SpellToMagicType(models.Model):
magic_type = models.ForeignKey(MagicType)
spell = models.ForeignKey(Spell)

mais comment pourrais-je continuer à utiliser cela au sein de Django "s ORM?

L'aide serait très appréciée. Merci!

Réponses:

3 pour la réponse № 1

Même chose, je réponds à votre autre question Est-ce une raison pour laquelle je ne peux pas ajouter ManyToManyField? fondamentalement cette erreur est parce que votre code dans les modèles(ORM) change mais votre base de données n’est pas "t, et django-evolution ne résout pas beaucoup de problèmes avec les modifications de la base de données, je vous suggère de chercher des extensions django (http://code.google.com/p/django-command-extensions/) et la commande sqldiff, mais regardez ma réponse


1 pour la réponse № 2

C'est plus ou moins la façon dont je l'aurais fait. En fait, je me demandais pourquoi cela ne fonctionnait pas, et l’essai moi-même dans un environnement propre à Django 1.1 - cela fonctionne à merveille.

Avez-vous essayé de mettre vous-même ce modèle dans un environnement propre et de voir ce que vous obtenez?