首页 > 解决方案 > 通过知道模型名称来获取模型动态

问题描述

我使用 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)

这不会引发错误,但非常奇怪的行为会用不同的参数“调用”视图,当然没有结果。

标签: djangodjango-models

解决方案


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


推荐阅读