【问题标题】:Need to show User count other data count on Django admin interface需要在 Django 管理界面上显示用户计数其他数据计数
【发布时间】:2019-05-04 14:26:37
【问题描述】:

我为 django admin 创建了自定义 index.html。这是屏幕截图

此处用户或模型 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',)

【问题讨论】:

  • 分享你的代码你尝试了什么
  • @AnjaneyuluBatta 老实说,我真的不知道如何更改管理索引。我已经更新了问题 - admin.py
  • 你在哪里使用index.html模板?
  • @AnjaneyuluBatta admin/index.html

标签: django django-templates django-views django-admin


【解决方案1】:

一个想法是使用 custom 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,
        )

【讨论】:

  • 这有帮助,谢谢,伙计。但是您认为这是传递变量的真正方式吗?我还必须添加一些图表和其他一些表格,所以我应该为所有内容制作上下文处理器还是还有其他一些方法。
  • 请参阅我的仅供参考部分。希望能帮助到你。如果此答案解决了您的问题,也请mark it as accepted
猜你喜欢
  • 1970-01-01
  • 2011-10-31
  • 2017-01-10
  • 2016-03-20
  • 2017-08-12
  • 2022-01-12
  • 1970-01-01
  • 2016-05-23
  • 2023-03-11
相关资源
最近更新 更多