【问题标题】:How to access parent abstract class of model in Django如何在 Django 中访问模型的父抽象类
【发布时间】: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


    【解决方案1】:

    使用isinstance:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-28
      • 2020-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-28
      • 2020-06-06
      相关资源
      最近更新 更多