1

我需要一种方法来判断模型是否具有 simple-history HistoricalRecord

一个不好的方法是检查是否self.history存在,但我不喜欢这样,因为开发人员不必使用 use history 作为HistoricalRecord.

或者,我可以尝试遍历,dir(model)但这会遇到相关名称反向查找可能导致DoesNotExist异常的问题。我可以尝试捕捉异常,但那很难看。

我需要这个,因为我想在 django admin 中将一个链接添加到一个特殊视图中,以查看简单的历史记录,并且我只想在模型具有HistoricalRecords.

4

1 回答 1

1

经过一番挖掘,似乎 simple-history 记录了所有具有历史对象的模型!多么方便!这个问题的解决方案可能是这样的

from simple_history import models

def has_simple_history(obj):
    return obj.__class__ in models.registered_models.values()
于 2018-02-07T01:05:34.673 回答