У меня есть несколько моделей Django, скажем,
class Foo(models.Model):
class Meta:
abstract = True
class Bar(Foo)
pass
Я бы хотел найти все модели, унаследованные от Foo, чтобы выполнить с ними задачу. Это должно быть легко, как
from django.db import models
from myapp.models import Foo
for model in models.get_models():
if issubclass(model, Foo):
do_something()
Увы, это не работает, поскольку issubclass(Bar, Foo)
сообщает False
, вероятно, в результате внутренней работы метакласса Django, который инициализирует модели.
Есть ли способ проверить, является ли модель Джанго потомком абстрактной модели Джанго?
Пожалуйста, не предлагайте утку печатать как решение. В этом случае я действительно хотел бы знать, существует ли отношение подкласса.