在 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 个问题:
- 如何访问django默认传递的模型?
Object
和 opts
似乎都不起作用。
- 如何覆盖默认视图(我需要覆盖什么方法)以将新变量添加到模板上下文中?
提前致谢。
您可以在 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)
我正在使用 django admin 和 grappelli 并想覆盖某个模型的默认视图。
我覆盖了 grapelli change_form
模板:
```
{% extends "grappelli:admin/change_form.html" %}
{% block javascripts %}
{{ block.super }}
<script type="text/javascript">{{Object}}</script>
{% endblock %}
```
我有 2 个问题:
- 如何访问django默认传递的模型?
Object
和opts
似乎都不起作用。 - 如何覆盖默认视图(我需要覆盖什么方法)以将新变量添加到模板上下文中?
提前致谢。
您可以在 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)