我有一些 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 元类的内部工作的结果.
Is there a way to check whether a Django models is a descendant of an abstract Django model?
请不要建议使用 duck typing 作为解决方案。在这种情况下,我很想知道是否存在子类关系。
最佳答案
问题在于如何导入类。而不是:
from myapp.models import Foo
使用:
from myproject.myapp.models import Foo
要了解什么是正确的方法,您可以查看 Django 如何导入您的模型:
print models.get_models()
关于python - 将 `issubclass()` 与 Django 模型一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7914787/