获取Django审计跟踪的所有记录

时间:2013-11-12 16:48:07

标签: django

我正在使用来自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

1 个答案:

答案 0 :(得分:0)

来自您关联的文档

  

可用的经理类型取决于您访问审计跟踪的方式。从实例中,审计跟踪将自动过滤为仅返回与该实例相关的结果。从模型类本身来看,结果不会以任何方式进行过滤,并且是跨多个审计项目进行报告的可能方法。

听起来你想做后者。由于audit.AuditTrail不是ForeignKey,我不希望prefetch_related起作用。这听起来像你想做的

MyModel.history.all()

将返回单个查询中的所有历史记录。