Как отправить пользовательский атрибут в контекст сайта администратора Django?

Я хочу отправить пользовательский атрибут (True или False) на сайт администратора Django, чтобы он был доступен в пользовательском шаблоне следующим образом:

{{ model.highlight_background }}
{% if model.highlight_background %}

Прямо сейчас у меня есть способ сделать это, который кажется невероятно халтурным: я переопределяю admin.AdminSite._build_app_dict, чтобы поместить 'highlight_background': model._meta.permissions, в model_dict, а затем добавляю permissions = (('highlight_background', 'Highlight Background'),) в класс Meta модели, на которой я хочу, чтобы это произошло, и затем вызываю, используя model.highlight_background.0.0 в шаблоне.

Это "работает", в том смысле, что я могу делать именно то, что я хочу с этой информацией, но это не похоже на "правильный" способ сделать это. Я хотел бы знать, есть ли лучший способ сделать это, желательно без переопределения чего-либо, кроме шаблонов сайта администратора, или с минимальным переопределением.

С тех пор я начал спускаться в кроличью нору, переопределяя django.db.models.options.Options.__init__, чтобы добавить self.highlight_background = False и просто напрямую использовать highlight_background = True в классе Meta, но я подумал, что лучше спросить, есть ли правильный способ сделать это, прежде чем я потрачу слишком много времени на создание своего собственного, менее чем идеального решения.

В итоге я просто жестко закодировал его в пользовательском шаблоне.

{% if model.object_name == 'XXXX' or model.object_name == 'YYYY' or model.object_name == 'ZZZZ' %}

Не очень красиво, но не так уродливо, как то, что я делал, чтобы избежать этого, и гораздо легче редактировать в дальнейшем. Я не считаю это ответом , но это мой обходной путь, пока я или кто-то другой не найдет что-то лучшее.

Вернуться на верх