Django admin为用户和组添加上下文

时间:2016-03-09 01:38:35

标签: python django django-admin

我正在定制django的管理页面,并在管理员usergroup的添加,更改,更改列表中传递一些变量时遇到了障碍模板。

我通过以下方式传递了索引或任何其他页面中的变量:

#admin.py

class MyAdminSite(AdminSite):
    def index(self, request, extra_context=None):
        extra_context = extra_context or {}
        extra_context['Sched_today'] = mycustomlink
        return super(MyAdminSite, self).index(request, extra_context=extra_context)

class MyModelAdmin (admin.ModelAdmin):
    def change_view(self, request, object_id, form_url='', extra_context=None):
    ....

但是如何将变量传递给groupsuser模板(身份验证和授权),changelist_viewchange_viewadd_view?< / p>

2 个答案:

答案 0 :(得分:0)

project/__init__.py中,您可以执行此操作。

from django.contrib import admin

from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User


class MyUserAdmin(UserAdmin):
    list_display = UserAdmin.list_display + ('is_superuser',)

    def change_view(self, request, object_id, form_url='', extra_context=None):
        if extra_context is None:
            extra_context = {"some_var": 1337}
        return super(MyUserAdmin, self).change_view(
            request, object_id=object_id, form_url=form_url, extra_context=extra_context)

admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)

您还可以覆盖add_form_templatechange_form_templatechange_list_template和其他人,指向您自己的自定义模板。

查看Django source了解有关这些模板的更多详情。

答案 1 :(得分:0)

首先取消注册模型,然后使用您自己的管理员重新注册模型:

from django.contrib import admin

from django.contrib.auth import get_user_model


class UserAdmin(admin.ModelAdmin):
    def change_view(self, request, object_id, form_url="", extra_context=None):
        raise PermissionError("Boo")


admin.site.unregister(get_user_model())
admin.site.register(get_user_model(), UserAdmin)