如何在Django中访问父抽象类的模型

时间:2016-08-22 11:34:49

标签: python django class inheritance

(使用dajngo 1.9和python 2.7)

所以我有一个带有几个子类的抽象类。它看起来像这样:

class Node(models.Model):

    [...]
    class Meta:
        abstract = True


class Individual(Node):
    [...]


class Company(Node):
    [...]


class Media(Node):
    [...]


class Share(models.Model):
    share = models.FloatField(null=True)

    child_content_type = models.ForeignKey(ContentType, related_name='child')
    child_object_id = models.PositiveIntegerField()
    child = GenericForeignKey('child_content_type', 'child_object_id')

    parent_content_type = models.ForeignKey(ContentType, related_name='parent')
    parent_object_id = models.PositiveIntegerField()
    parent = GenericForeignKey('parent_content_type', 'parent_object_id')

事实是,实际上,Share的子级和父级可以使用任何模型。所以我想实现一个扩展的save()方法(用于Share),它将检查子级和父级继承自Node。

我正在寻找看起来像这样的东西:

assert child.inherited_class.name == 'node'
assert parent.inherited_class.name == 'node'

(或{8}的child_content_type

1 个答案:

答案 0 :(得分:2)

使用isinstance

assert isinstance(child, Node)
assert isinstance(parent, Node)