django - 通过知道模型名称来获取模型动态
问题描述
我使用 Django 2.1。
我有一个通用实用程序/功能(使用芹菜),我从模型的save
方法调用(是一个抽象模型,由其他模型继承)。
因为来自函数的数据将被序列化,所以我将模型名称和 PK 传递给它。
class A(models.Model)
def save(self, *args, **kwargs):
send_async(model_name=type(self).__name__, pk=self.id))
class B(A)
class C(A)
后来想查询Model,但是不知道怎么获取Model:
我试过了:
model = apps.get_model('django_app_name.{}'.format(model_name))
我收到以下错误:
No installed app with label 'django_app_name'.
还:
model = ContentType.objects.get(model=model_name)
这不会引发错误,但非常奇怪的行为会用不同的参数“调用”视图,当然没有结果。
解决方案
To get the model name, try this:
send_async(model_name=self.__class__.__name__, pk=self.id)
instance.__class__.__name__
will return the class name
推荐阅读
- c# - 使用哪些 azure 函数
- node.js - 在没有 $unwind 的数组中查找重复项
- shell - 根据时间戳匹配最接近的文件名
- android - Android Room,SQLite - 预期,得到'COLUMN'
- firebase - 使用 facebook 进行 firebase 身份验证 - React Native
- android - 对于 Android,CMAKE_SYSTEM_VERSION 是指最低 api 级别还是目标 api 级别?
- puppet - 如何判断 Puppet 角色是否已应用于节点?
- c# - 如何更改 XAML 中“翻转”动画中的图像?
- pandas - 根据列上的值展平数据框的最佳方法
- javascript - 第一次关闭div,10分钟后不会再出现