Как определить, есть ли в модели записи простой истории?

Мне нужен способ сказать, есть ли у модели простая история 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()
Другие вопросы по тегам