问题描述
我正在尝试获取django models.Model的ContentType。不尝试从ContentType获取模型,这是我可以在文档中找到的全部。例如:
model_name = 'FooBar'
MyModel = apps.get_model('app_xyz',model_name)
MyModel
<class 'apps.app_xyz.models.FooBar'>
如何获取MyModel的ContentType?我唯一能做的就是将model_name字符串设置为低并直接查询ContentTypes:
ct = ContentType.objects.get(model=model_name.lower())
这似乎很脆弱,使用lower()有我不喜欢的代码味道。我已经看过FooBar的方法,_methods和__methods都没有用。谢谢!
解决方法
from django.contrib.auth.models import User
cc = ContentType.objects.get_for_model(User)