为什么我不能在django中为子类创建一个ForeignKey字段?

时间:2012-11-15 18:11:54

标签: python django

类文件夹继承自Item类,它具有Folder的外键:

class Item(models.Model):
    # some fields
    folder = models.ForeignKey('Folder')

class Folder(Item):
    # some fields

当我尝试运行时,我收到错误:

app.item: 'folder' has a relation with model Folder, which has either not been installed or is abstract

我认为在这里做的正确的事情是将模型名称放在引号中,我已经完成了,但它似乎没有帮助。我应该怎么做才能使这项工作?

编辑:使用有意义的类名澄清问题

1 个答案:

答案 0 :(得分:1)

  

我有项目(A),其中一些是文件夹(B)。我想要两个班级   引用最多一个文件夹

对你来说,尝试做什么并没有多大意义,但这可以实现 如下:

class Item(models.Model):
    # some fields
    is_folder = models.BooleanField(default=False)
    some_other_folder = models.ForeignKey('self', null=True, blank=True)

然后使用python代码检查is_folder==False是否为some_other_folder 不是None(null)。

所以实际上你不需要2个模型。