【问题标题】:Override django change_form.html template when a third app is overriding it当第三个应用程序覆盖它时覆盖 django change_form.html 模板
【发布时间】:2018-05-22 03:01:27
【问题描述】:

我试图只为一个模型覆盖change_form.html,所以我按照the django documentation 中的说明进行操作并创建了/templates/my_app_name/my_model_name/change_form.html

问题是,它不起作用,我没有看到我添加到change_form 模板的额外功能。我正在使用django_guardian,它也覆盖了相同的模板,所以我的假设是这是导致问题的原因。值得一提的是,在将模板放入my_app_name/my_model_name/ 文件夹之前,两个模板的功能都在管理界面中可见。

有没有办法仅将其应用于 1 个模型?

【问题讨论】:

    标签: python django templates django-admin


    【解决方案1】:

    你应该检查this answer

    您可以在模板中指定要扩展的模板。 因此,您正在扩展第三个应用程序的模板,该模板扩展了 djando 管理员的模板。

    例子:

    admin.py

    class MyModel(ThirdAppModelAdmin):
        change_form_template = 'my_app_name/templates/change_form.html'
    

    my_app_name/templates/change_form.html

    {% extends "thirdapp/templates/change_form.html" %}
    {% block thatYouNeed %}
        {{ block.super }}
        Your content here
    {% endblock %}
    

    嗯,至少我是这样做的。

    【讨论】:

      【解决方案2】:

      GuardedModelAdmin 更改 change_form_template 以使用来自 django-guardian 的模板。尝试在模型管理类中将其改回:

      class MyModelAdmin(GuardedModelAdmin):
          ...
          change_form_template = 'my_app_name/my_model_name/change_form.html'
      

      【讨论】:

      • 那我不会失去守护者的功能吗?
      • 您询问了如何使用您的change_form.html 模板。您的 change_form.html 是否与 django-guardian 一起使用取决于您的模板。
      • 所以解决办法就是把监护人change_form.html复制粘贴到我的里面,然后用change_form_template设置?
      • 我会尝试这样做。
      猜你喜欢
      • 2014-05-12
      • 2019-01-01
      • 1970-01-01
      • 2020-05-29
      • 2012-10-18
      • 1970-01-01
      • 2011-04-27
      • 2020-02-18
      • 2023-04-03
      相关资源
      最近更新 更多