Как определить, есть ли в модели записи простой истории?
Мне нужен способ сказать, есть ли у модели простая история HistoricalRecord
,
Плохой способ проверить, видит ли self.history
существует, но мне это не нравится, потому что разработчик не должен использовать историю использования в качестве имени атрибута для HistoricalRecord
,
В качестве альтернативы я мог бы попытаться перебрать dir(model)
но это сталкивается с проблемами, когда обратный поиск связанного имени может привести к DoesNotExist
исключение. Я мог бы попытаться поймать исключение, но это ужасно.
Мне это нужно, потому что я хотел бы добавить ссылку в django admin в специальное представление, которое я сделал для просмотра простых записей истории, и я хочу отображать ссылку, только если модель имеет HistoricalRecords
,
1 ответ
После нескольких копаний выясняется, что simple-history ведет учет всех моделей, имеющих исторические объекты! Как удобно! Решением этой проблемы может быть что-то вроде
from simple_history import models
def has_simple_history(obj):
return obj.__class__ in models.registered_models.values()