【发布时间】:2016-08-22 11:34:48
【问题描述】:
(使用 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'
(或与child_content_type 一起)
【问题讨论】:
标签: python django class inheritance