为什么我无法添加ManyToManyField?

1 投票
2 回答
1370 浏览
提问于 2025-04-15 18:14

我正在构建一个Django应用程序,

这是我有的一些模型:

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)

在同步这些模型时,我遇到了这个错误:

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

这是什么原因导致的呢?我该如何解决这个问题?

非常感谢大家的帮助。


补充:

我正在使用django-evolution http://code.google.com/p/django-evolution/

2 个回答

3

MagicType是不是在同一个模型文件里,并且在Spell之前声明的?

magic_types = models.ManyToManyField('MagicType') 这样写可以用吗?(这里的'MagicType'是用引号括起来的)

3

我建议你使用django-extensions,这样你就可以使用一个叫做 sqldiiff 的命令,它比evolution更好用,因为在MagicType和MagicType之间创建中间表时会出现问题。

我建议你运行命令 sqlall yourapp,然后直接执行创建新中间表的SQL代码。evolution不会帮你做到这一点 :(

撰写回答