如何在Django管理模板中调用自定义方法

时间:2019-05-07 10:55:46

标签: python django python-3.x django-models

我遇到了麻烦:我可以轻松更新发送“ object_list”对象并用其迭代的html模板。

{%for item in object_list%}
#... some operation
{% endfor %}

但是,我还不知道对“ template / admin / add_form.html”中覆盖的admin-template做同样的事情:如何发送和检索添加到admin.py ModelAdmin自定义类中的方法? / p>

这是我的url.py

from django.urls import path
from django.conf.urls import url
from . import views as mysearch_views

from django.contrib import admin
from django.views.generic import ListView, DetailView
from .models import MySearch

# Admin custom
admin.sites.AdminSite.site_header = ‘to be decided’
admin.sites.AdminSite.site_title = ‘to be decided’
admin.sites.AdminSite.index_title = ‘to be decided’

urlpatterns = [
url(r'^$', mysearch_views.my_search, name="my_search"),
url(r'^(?P<id>\d+)/(?P<slug>[\w-]+)/$', DetailView.as_view(model=MySearch, template_name="queries.html"), name="queries"),
url(r'^contacts', mysearch_views.contacts, name="contacts"),
url(r'^result-table', mysearch_views.create_table, name="results"),]

预先感谢

1 个答案:

答案 0 :(得分:1)

在您的ModelAdmin类中,您可以覆盖add_view方法来为“添加表单”添加自定义上下文数据。其他管理员视图还有其他方法:change_view用于“更改表单”,等等。

def add_view(self, request, form_url='', extra_context=None):
    extra_context = extra_context or {}
    extra_context['your_custom_data'] = self.your_custom_method()
    return super().add_view(request, form_url, extra_context=extra_context)

然后您可以在覆盖的管理模板中使用{{ your_custom_data }}

add_view和其他相关方法记录在here中。