Configure the Admin Settings in Django

Configuring the Admin Settings in Django involves several steps, including customizing the admin interface, registering models, and setting up permissions. Here’s a step-by-step guide to help you get started:

1. Set Up Django Admin

The Django admin site is enabled by default. To ensure it is set up correctly, include the django.contrib.admin app in your INSTALLED_APPS setting in settings.py:

INSTALLED_APPS = [
    ...
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    ...
]

2. Create a Superuser

To access the admin site, you need a superuser account. Create one using the following command:

python manage.py createsuperuser

Follow the prompts to set up a username, email, and password.

3. Register Models

Register your models to make them available in the admin interface. Open admin.py in your app directory and register your models:

from django.contrib import admin
from .models import YourModel

admin.site.register(YourModel)

4. Customize Admin Interface

You can customize the admin interface for each model by creating a model admin class:

from django.contrib import admin
from .models import YourModel

class YourModelAdmin(admin.ModelAdmin):
    list_display = ('field1', 'field2', 'field3')  # Fields to display in the list view
    search_fields = ('field1', 'field2')           # Fields to search in the search bar
    list_filter = ('field3',)                      # Fields to filter in the sidebar

admin.site.register(YourModel, YourModelAdmin)

5. Set Up Permissions

Django admin provides a default set of permissions (add, change, delete, view). You can manage these permissions through the admin interface or by using Django’s permission system:

from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from .models import YourModel

content_type = ContentType.objects.get_for_model(YourModel)
permission = Permission.objects.create(
    codename='can_publish',
    name='Can Publish Posts',
    content_type=content_type,
)

Assign permissions to a user or group:

from django.contrib.auth.models import User, Group

user = User.objects.get(username='yourusername')
group = Group.objects.get(name='yourgroup')

# Assign to user
user.user_permissions.add(permission)

# Assign to group
group.permissions.add(permission)

References
https://docs.djangoproject.com/en/5.0/ref/django-admin/
https://docs.djangoproject.com/en/5.0/ref/contrib/admin/