我还在研究whether to use abstract base classes or proxy models对于我的控制面板应用程序。我现在正在查看抽象基类。
假设我有一些这样的模型:
class App(models.Model):
name = CharField(max_length=100)
class Meta:
abstract = True
class CMSMonitorApp(App):
alerts = PositiveIntegerField()
class PasswordResetApp(App):
login = CharField(max_length=100)
token = CharField(max_length=100)
在控制面板的主页上,我想为我的用户显示所有可用的应用程序。一个简单的方法是获取继承 App
抽象类的所有内容。
如何获取继承抽象基类的所有类?
最佳答案
假设您的 django 应用程序名为 myapp
,这是一个返回继承抽象基类的所有类的函数:
from django.apps import apps
def get_subclasses(abstract_class):
result = []
for model in apps.get_app_config('myapp').get_models():
if issubclass(model, abstract_class) and model is not abstract_class:
result.append(model)
return result
这适用于 django 1.11,您可能必须将其适应其他版本。
关于python - 访问 django 中抽象基类的所有子级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49285546/