假设my_instance
是模型MyModel
的一个实例。
我正在寻找一种好的方法来做:
my_model = get_model_for_instance(my_instance)
我还没有找到任何直接的方法来做到这一点。 目前,我想到了这个:
from django.db.models import get_model
my_model = get_model(my_instance._meta.app_label, my_instance.__class__.__name__)
这样做可以吗?这是最佳实践吗?还有一个
_meta.object_name
,它似乎提供了与 __class__.__name__
相同的内容。 它是更好还是更差? 如果是,为什么?此外,如果在项目范围内多次出现应用标签(例如来自'django.contrib.auth'的'auth'和'myproject.auth'),那么我如何知道我获取的是正确的模型?
在这种情况下,
get_model
可能不可靠吗?感谢任何提示、指针和经验分享!
__class__
必须完全是实例所属的类,这一点没有任何可能的歧义。这是 Python 的工作原理。你在问什么? - S.Lott__class__.__name__
相同的字符串,而且有多少人选择在get_model
或其他地方使用这两者中的哪一个。 - Geradeausanwalt