Remove default apps from Django-admin

前端 未结 5 1723
無奈伤痛
無奈伤痛 2020-12-08 09:15

By default, in Django-admin there is Users, Groups, and Sites apps. How can I remove Groups and Sites?

I tried to remove admin.autodiscover() from root

相关标签:
5条回答
  • 2020-12-08 09:46

    To get rid of Users and Groups I had to do in admin.py:

    from django.contrib import admin
    # Need to import this since auth models get registered on import.
    import django.contrib.auth.admin
    import django.contrib.auth.models
    from django.contrib import auth
    
    admin.site.unregister(auth.models.User)
    admin.site.unregister(auth.models.Group)
    
    0 讨论(0)
  • 2020-12-08 09:48

    In addition to the above double check your ordering of "INSTALLED_APPS" in "settings.py"

    INSTALLED_APPS = [
        # django apps first
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    
        # custom apps below
        'my_app'
    ]
    

    Otherwise it will cause an error. See here: Issue with Django admin registering an inline user profile admin

    0 讨论(0)
  • 2020-12-08 09:53

    In an admin.py you know will definitely be loaded, try:

    admin.site.unregister(User)
    admin.site.unregister(Group)
    admin.site.unregister(Site)
    
    0 讨论(0)
  • 2020-12-08 09:56

    If you got:

    django.contrib.admin.sites.NotRegistered: The model Group is not registered

    Then make sure that your INSTALLED_APPS in proper order like this:

    enter code hereINSTALLED_APPS = (
    # [1] Django apps
    'django.contrib.auth',
    ...
    
    # [2] your custom apps
    'anyproject.anytuff',
    )
    
    0 讨论(0)
  • 2020-12-08 10:00

    Loop through all apps, and unregister any models they have registered.

    from django.apps import apps
    
    
    # De-register all models from other apps
    for app_config in apps.get_app_configs():
        for model in app_config.get_models():
            if admin.site.is_registered(model):
                admin.site.unregister(model)
    
    
    # Register only those models you want
    ...
    
    0 讨论(0)
提交回复
热议问题