在 django 中覆盖模型的默认视图和模板/将变量传递给 grapelli 模板

Overriding default view and template for a model in django / passing variables to grapelli template

我正在使用 django admin 和 grappelli 并想覆盖某个模型的默认视图。

我覆盖了 grapelli change_form 模板:

```

{% extends "grappelli:admin/change_form.html" %}
{% block javascripts %}
    {{ block.super }}
    <script type="text/javascript">{{Object}}</script>
 {% endblock %}

```

我有 2 个问题:

  1. 如何访问django默认传递的模型? Objectopts 似乎都不起作用。
  2. 如何覆盖默认视图(我需要覆盖什么方法)以将新变量添加到模板上下文中?

提前致谢。

您可以在 admin.py 中使用 change_view 覆盖并通过 extra_context 传递变量。例如:

class GivenModel(models.Model):
    def change_view(self, request, object_id, form_url='', extra_context=None):

                your_obj = GivenModel.objects.get(id=asset_id.group(1))
                extra_context = {'title': your_obj.description}
            return super(GivenModel, self).change_view(request, object_id, form_url, extra_context)