我正在使用来自this site的Django审计线索。
这就是我目前访问历史记录的方式:
for m in MyModel.objects.all() :
for h in m.history.all() :
print h
这导致我的数据库中每个模型的SQL查询。是否可以使用单个SQL查询获取所有历史元素?
编辑:预取相关模型的常规方法不起作用:
MyModel.objects.prefetch_related('history')
引发了一个ValueError:'history' does not resolve to a item that supports prefetching
答案 0 :(得分:0)
来自您关联的文档
可用的经理类型取决于您访问审计跟踪的方式。从实例中,审计跟踪将自动过滤为仅返回与该实例相关的结果。从模型类本身来看,结果不会以任何方式进行过滤,并且是跨多个审计项目进行报告的可能方法。
听起来你想做后者。由于audit.AuditTrail
不是ForeignKey
,我不希望prefetch_related
起作用。这听起来像你想做的
MyModel.history.all()
将返回单个查询中的所有历史记录。