如何判断一个模型是否有简单的历史记录?
How to tell if a model has simple-history records?
我需要一种方法来判断模型是否具有简单历史 HistoricalRecord
。
一个不好的方法是检查 self.history
是否存在,但我不喜欢这样,因为开发人员不必使用 use history 作为 HistoricalRecord
的属性名称。
或者,我可以尝试遍历 dir(model)
,但这会遇到相关名称反向查找可能导致 DoesNotExist
异常的问题。我可以尝试捕获异常,但这很难看。
我需要这个,因为我想在 django admin 中添加一个 link 到一个特殊视图,我查看简单的历史记录并且我想显示 link 只有当模型有 HistoricalRecords
.
经过一番挖掘,simple-history 似乎记录了所有具有历史对象的模型!多方便啊!这个问题的解决方案可以是
from simple_history import models
def has_simple_history(obj):
return obj.__class__ in models.registered_models.values()
我需要一种方法来判断模型是否具有简单历史 HistoricalRecord
。
一个不好的方法是检查 self.history
是否存在,但我不喜欢这样,因为开发人员不必使用 use history 作为 HistoricalRecord
的属性名称。
或者,我可以尝试遍历 dir(model)
,但这会遇到相关名称反向查找可能导致 DoesNotExist
异常的问题。我可以尝试捕获异常,但这很难看。
我需要这个,因为我想在 django admin 中添加一个 link 到一个特殊视图,我查看简单的历史记录并且我想显示 link 只有当模型有 HistoricalRecords
.
经过一番挖掘,simple-history 似乎记录了所有具有历史对象的模型!多方便啊!这个问题的解决方案可以是
from simple_history import models
def has_simple_history(obj):
return obj.__class__ in models.registered_models.values()