我想将对象列表传递到 Django 管理中的自定义模板,删除视图 and 更改视图。我修改了 base_site.html 以包含导航栏,并且我想从视图中将对象列表传递到导航栏。
我之前也为 django admin index、changelist_view 和 add_view 做过这件事。我重写这些函数并添加我想要的额外内容。
但我不能在前两个中做到这一点。这个想法应该是这样的:
@csrf_protect_m
@transaction.atomic
def delete_view(self, request, object_id, extra_context=None):
extra_context = extra_context or {}
mygetModels = getModels()
extra_context["modelsTables"] = mygetModels.getTablesModels()
return super(table_NameAdmin, self).delete_view(request, object_id, extra_context)
正如我所说,这之前在changelist_view、index 和add_view 中有效。但没有工作于删除视图 and 更改视图.
从您发布的代码来看,我不确定为什么您的delete_view
不工作。我建议采用不同的方法将项目添加到上下文中。
尝试覆盖您的管理网站each_context https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.AdminSite.each_context方法。这避免了必须重写多个模型管理方法。
def each_context(self, request):
context = super(MyAdminSite, self).each_context(request)
context['extra_var'] = 'Extra variable'
return context
如果您想在 Django 管理之外的模板中使用这些变量,您可以编写自定义模板标签 https://docs.djangoproject.com/en/1.9/howto/custom-template-tags/#simple-tags or 上下文处理器 https://docs.djangoproject.com/en/1.9/ref/templates/api/#subclassing-context-requestcontext.
如果您使用 Django 1.9+,您可以使用simple_tag
装饰者
将标签的结果保存到变量中。
{% getTablesModels as modelsTables %}
然后就可以在模板中使用该变量了
{% for item in modelsTables %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)