python - 将 `issubclass()` 与 Django 模型一起使用

标签 python django django-models

我有一些 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/

相关文章:

Python AWS Lambda 部署 - 没有 Zappa 要求的 Zappa 包

python - 将列拆分为多列,在 Pandas 中具有唯一值

python - Django REST 框架——Many2Many/Through

Django REST Framework 获取AuthToken 用户登录API View

Django 模型 - 如何添加订单索引注释?

python - Pandas-在列中拆分文本并在行中搜索

python - 将数据插入 Cassandra

mysql - 如何在 Django 中存储年份

python - Django `bulk_create` 及相关对象

python - Errno 111 Connection refused with a very basic password reset