使用Python获取子类而不是基类

2024-05-19 22:26:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在下面的代码中使用sender.__class__获取发送者的类。在我有一个从基类继承的模型之前,这是有效的

例如,sender是class Profile,但是sender.__class__给出了从MPTTModelBase继承的基本bass Profile(即abstract = True)。与.Meta等相同

@receiver(post_save)
def send_func(sender, instance, created, **kwargs):

    print(sender) #<class 'demo.apps.t.models.Profile'>
    print(sender.__class__) # <class 'mptt.models.MPTTModelBase'>

如何让类忽略继承的模型(如果它有继承模型的话)


Tags: 代码模型abstracttruemodelsprofile基类sender
1条回答
网友
1楼 · 发布于 2024-05-19 22:26:21

对于大多数django信号,信号的发送者是类本身。这里,sender作为类,实际对象是instance

所以你会得到:

  • sender.__class__:模型的metaclass
  • sender._metamodel's Meta选项。在这里得到它是因为Django从模型中删除了Meta,并将选项作为_meta提供,它通过一些方法对其进行了扩充

相关问题 更多 >