最有效的方法来执行类似数据透视表的查询,以总结django中的用户编辑

时间:2011-12-25 12:48:16

标签: mysql database django pivot-table django-reversion

我想向用户显示我所有数据库对象的最后10次更改。

我正在使用django-reversion来跟踪模型对象更改的历史记录。我在摘要视图中也有点重复这一点。在reversion按对象创建历史列表的情况下,摘要视图只跟踪每个按时间顺序变化的列表。使用此摘要列表查询是否更有效,或者我是否应该简单地查询所有对象表中所有对象的最近10次编辑?

第二部分:我想向用户显示按对象分组的编辑

因此,假设用户每次编辑3个对象10次。用户在不同的日子编辑了每个对象,因此在第1天,用户编辑了所有3个,在第2天,用户编辑了其中的1个,等等。我想向用户显示如下表格

Object      Date of your most recent edit    Date of last edit  
Object 1            12-24-11                     12-25-11  
Object 2            12-20-11                     12-23-11  

第二列是最新的用户特定编辑,第三列是任何用户的最新编辑。

我希望用户能够选择对象1,然后查看该对象的所有编辑内容:

Object      Date of your most recent edit    Date of last edit
Object 1            12-24-11                     12-25-11
   edited name      12-24-11
   edited type      12-19-11
   edited subject   12-18-11
   edited date      12-18-11
   edited type      12-16-11
Object 2            12-20-11                     12-23-11

我如何构建此查询?我能想到的最直接的方法是查询用户从reversion表或summary表中过滤的不同/唯一对象列表,然后查询用户和对象的reversion以获取更详细的历史记录。这似乎更有效率。

我是否可以按用户创建另一个汇总表来跟踪更改以便以此格式查询?我该如何构建这种类型的表?

一些代码。我用它来获取给定对象的所有历史列表。它为我提供了数据库对象的版本列表,有关编辑内容的注释,编辑日期以及进行更改的用户:

version_list = Version.objects.get_for_object(object).select_related("revision__user")

我只是用它来获得一个简单的编辑列表。在此摘要表中,最近10个条目是最近的更改(对象,有关更改内容的详细信息,日期和用户):

whats_new_items = WhatsNew.objects.all()[0:10]

0 个答案:

没有答案