【问题标题】:Is a reason I can't add a ManyToManyField?是我不能添加 ManyToManyField 的原因吗?
【发布时间】:2010-01-20 02:32:28
【问题描述】:

所以我正在构建一个 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/

【问题讨论】:

  • 在全新安装 Django 1.1 项目时,您发布的代码完美运行。
  • 这可能是什么原因呢?我用的是SVN版本。
  • 您是否安装了任何类型的架构迁移?
  • 我认为您需要更仔细地调查@Jarret 的观察。尝试在新目录中安装一个干净的 1.1.1,看看这是否突然起作用。不管它是否有效,它都会给你一个探索的方向。
  • 石头我有 django-evolution!

标签: python django django-models


【解决方案1】:

我建议你使用 django-extensions ,这会给你一个比进化更好的命令sqldiiff,因为在创建 MagicType 和 MagicType 之间的中间表时存在问题。

建议你运行sqlall yourapp命令,直接执行新建中间表的sql代码。进化不适合你:(

【讨论】:

  • 谢谢,我会调查一下,我已经安装了扩展,但我从未使用过该功能。是时候尝试一下了!
【解决方案2】:

MagicType 是否在同一个模型文件(和之前)Spell 中声明?

magic_types = models.ManyToManyField('MagicType') 是否有效(引用了“MagicType”)?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多