我有一个基本模型类,每次更改对象时都会创建对象的历史记录。该模型具有名为“is_history”的字段。这个想法是,每次有人更改模型时,都会使用旧数据创建模型的新实例。具有旧数据的新模型具有“is_history=True”,因为它成为历史对象。在默认的管理员更改列表中,我不想看到历史对象。默认情况下,我不想在任何地方看到它们。这就是为什么我创建了覆盖默认 get_query_set() 并添加“is_history=False”的新管理器。
def get_query_set(self):
qs = super(ModelHistoryManager, self).get_query_set()
return qs.filter(is_history=False)
但我也应该能够很少在更改列表视图中显示历史对象,例如使用管理过滤器。
我的问题是:我有一个已经过滤了这个值的查询集。但是在管理员的过滤器中,我从基本管理器获得过滤后的查询集,我想将此过滤器从 is_history=False 更改为 is_history=True,或者如果用户想要显示所有记录,则删除“is_history”的过滤器 - 两个历史记录和原始记录。
任何想法?