我为Django管理员创建了自定义index.html。这是ScreeenShot
这里的用户或模型1的计数是静态的。我想从数据库更新。有什么方法可以将变量从admin.py传递到主管理界面?
有什么方法可以更改索引,就像我们可以对某些模型进行更改一样:-
class UserAdmin(DjangoUserAdmin):
"""Define admin model for custom User model with no email field."""
fieldsets = (
(None, {'fields': ('email', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name','Mobile_number','Address','avatar','AI','U_ID')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'password1', 'password2'),
}),
)
list_display = ('email', 'first_name', 'last_name', 'is_staff','Mobile_number','Address','avatar','AI','U_ID')
search_fields = ('email', 'first_name', 'last_name','Mobile_number','Address','avatar','AI','U_ID')
ordering = ('email',)
答案 0 :(得分:1)
一个想法是使用自定义 context-processor
。您可以添加一个新的上下文处理器,如下所示:
# in context_processor.py
def user_count(request):
return { 'total_user' : User.objects.all().count() }
在settings.py
配置中的TEMPLATE
中注册它:
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'your_app.context_processor.user_count'
],
},
在模板中使用它:
<div>
{{ user_count }}
</div>
context-processor
会很有帮助。但是,如果此数据仅用于一页,并且可能需要通过modeladmin发送额外的上下文数据,则change_view更适合于此。例如(从文档粘贴的副本):
class MyModelAdmin(admin.ModelAdmin):
change_form_template = 'admin/myapp/extras/openstreetmap_change_form.html'
def get_osm_info(self):
pass
def change_view(self, request, object_id, form_url='', extra_context=None):
extra_context = extra_context or {}
extra_context['osm_data'] = self.get_osm_info()
return super().change_view(
request, object_id, form_url, extra_context=extra_context,
)