我想使用sender.__class__
獲取以下代碼中發件人的類。這有效,直到我有一個從基類繼承的模型。使用Python獲取孩子__class__不是基類
例如發件人是班級檔案,但sender.__class__
給出的基本低音檔案繼承自MPTTModelBase(即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'>
同樣的事情,我怎麼類繼承忽略模型(如果有的話)?
'sender' * *是這個信號的類本身。 – spectras
我明白了,所以'sender .__ class__''正在降低另一個級別?但爲什麼如果我做'sender.Meta''它是否得到了MPTTModelBase Meta。它不應該得到發件人嗎? – Prometheus
的確,'sender .__ class__'可以讓你獲得[metaclass](http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python)。一旦加載了類,您將使用'sender._meta'來訪問元選項。 – spectras