在Django中添加ManyToManyField时出错

时间:2010-01-21 02:18:37

标签: python django django-models django-orm django-evolution

好的,所以我最近发布了一个关于添加 ManyToManyField

时出错的问题

模型如下

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)

这是我使用 django-evolution 进行迁移时遇到的错误:

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

那么,有没有办法手动设置ManyToManyField而不在两个模型中指定它?让我们说这样的模型

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

但我如何继续在 Django的ORM 中使用它?

非常感谢帮助。谢谢!

2 个答案:

答案 0 :(得分:3)

同样的,我回答你的另一个问题Is a reason I can't add a ManyToManyField?这个错误基本上是因为你的模型中的代码(ORM)发生了变化而你的数据库没有变化,而django-evolution并没有解决许多问题。数据库,我建议你寻找django-extensions(http://code.google.com/p/django-command-extensions/)和命令sqldiff,但看看我的另一个答案

答案 1 :(得分:1)

这或多或少都是我做的方式。事实上,我很困惑为什么这不起作用,并在一个干净的Django 1.1环境中自己尝试 - 它可以游泳。

您是否尝试过自己将这个模型放在一个干净的环境中,看看你得到了什么?