Py学习  »  Django

需要在django管理界面上显示用户计数其他数据计数

Kashyap • 6 年前 • 1609 次点击  

我已经为django admin创建了自定义index.html。这是尖叫声 enter image description here

这里用户或模型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',)
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43333
 
1609 次点击  
文章 [ 1 ]  |  最新文章 6 年前
ruddra
Reply   •   1 楼
ruddra    6 年前

一个想法是 习俗 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>

供参考

上下文处理器 当您希望在每个模板中显示相同的数据时非常有用。但是如果这些数据只用于一个页面,并且可能需要通过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,
        )