Необходимо показать количество пользователей других данных на интерфейсе администратора Django - PullRequest
0 голосов
/ 03 декабря 2018

Я создал собственный index.html для администратора django.Вот ScreeenShot 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',)

1 Ответ

0 голосов
/ 03 декабря 2018

Одной из идей является использование 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>

FYI

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,
        )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...