我有一个通用的关系的模型:如何从Django模型获取应用程序?
TrackedItem --- genericrelation ---> any model
我希望能够得到一般,从最初的模型,跟踪项目。
我应该可以在任何模型上进行修改而不用修改它。
为此,我需要获取内容类型和对象ID。获取对象ID很容易,因为我有模型实例,但获取内容类型不是:ContentType.object.filter需要模型(仅为content_object.__class__.__name__
)和app_label。
我不知道如何以可靠的方式获取模型所在的应用程序。
现在我做app = content_object.__module__.split(".")[0]
,但它不适用于django contrib应用程序。
这是比使用_meta更好的解决方案。 – Wogan 2010-04-30 06:47:48
是吗?这不是命中数据库吗? – meshy 2014-11-03 16:44:01
@meshy yes但django ContentType在其管理器上使用缓存,因此它只在每个模型中查询一次。 – dalore 2016-03-06 11:05:18