【发布时间】:2022-01-21 17:21:37
【问题描述】:
我想向 Django 管理网站发送一个自定义属性(True 或 False),以便可以在自定义模板中访问它:
{{ model.highlight_background }}
{% if model.highlight_background %}
现在我有一种方法可以做到这一点,感觉非常hacky:我覆盖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 并直接在Meta 类中使用highlight_background = True 的兔子洞,但我想我最好问问是否有合适的方法在我花太多时间破解我自己的,不太理想的解决方案之前先解决这个问题。
【问题讨论】:
标签: python django django-models django-admin