Django (1.10) override AdminSite

前端 未结 3 1810
你的背包
你的背包 2021-01-02 04:25

I\'ve tried to override AdminSite class with my own custom class. I followed tutorial from django\'s documentation: https://docs.djangoproject.com/en/1.10/ref/contrib/admin

3条回答
  •  醉酒成梦
    2021-01-02 04:50

    From myapp/admin.py:

    from django.contrib.auth.models import Group, User
    from django.contrib.auth.admin import GroupAdmin, UserAdmin
    from django.contrib.admin import AdminSite
    from django.contrib import admin
    
    from .models import MyModel #This is my app's model
    
    # Custom admin site
    class MyAdminSite(AdminSite):
        site_header = 'My Project Title'
        site_title  = 'My Project Title Administration'
        index_title = 'My Project Title Administration'
        # You can add on more attributes if you need 
        # Check out https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#adminsite-objects
    
    # Create admin_site object from MyAdminSite
    admin_site = MyAdminSite(name='my_project_admin')
    
    # Register the models
    class MyModelAdmin(admin.ModelAdmin):
        list_display = ('id', 'description')
    
    admin_site.register(MyModel, MyModelAdmin)
    
    # Create and register all of your models
    # ....
    
    # This is the default Django Contrib Admin user / group object
    # Add this if you need to edit the users / groups in your custom admin
    admin_site.register(Group, GroupAdmin)
    admin_site.register(User, UserAdmin)
    

    From myproject/urls.py

    from django.conf.urls import url
    from django.contrib import admin
    from myapp.admin import admin_site ##! Important..Import your object (admin_site) instead of your class (MyAdminSite)
    
    urlpatterns = [
        url(r'^admin/', admin_site.urls), #Now all /admin/ will go to our custom admin
    ]
    

提交回复
热议问题