繁体   English   中英

为什么我不能在Django的子类中创建ForeignKey字段?

[英]Why can't I create a ForeignKey field to a child class in 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

我认为此处正确的做法是将模型名称加上引号,但这已经没有用。 我应该怎么做才能使这项工作?

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

我有项目(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==Falsesome_other_folder不是None(null)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM