【问题标题】:How do you send a custom attribute to the Django admin site context?如何将自定义属性发送到 Django 管理站点上下文?
【发布时间】: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


    【解决方案1】:

    我最终只是将其硬编码到自定义模板中。

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

    不漂亮,但不像我为避免这种情况所做的那样丑陋,而且以后编辑起来也容易得多。我不会将此标记为 答案,但这是我的解决方法,直到我或其他人找到更好的东西。

    【讨论】:

      猜你喜欢
      • 2019-08-18
      • 2011-05-02
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 2011-11-28
      • 2020-03-04
      • 2021-06-07
      • 1970-01-01
      相关资源
      最近更新 更多