Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Admin Actions in Django

Introduction

In Django, the admin interface provides a set of tools to manage your application's data. One of the powerful features of the Django admin is the ability to create custom actions that can be applied to one or more objects in the admin list view. This tutorial will guide you through the process of creating these custom admin actions.

Setting Up Your Django Project

Before we dive into creating admin actions, ensure you have a Django project set up. If not, you can create one by following these steps:

django-admin startproject myproject

cd myproject

python manage.py startapp myapp

Don't forget to add your app to the INSTALLED_APPS in your settings.py file.

INSTALLED_APPS = [
  ...
  'myapp',
]

Creating a Model

Let's create a simple model to demonstrate admin actions. Add the following model to your models.py file in your app:

from django.db import models

class Item(models.Model):
  name = models.CharField(max_length=100)
  description = models.TextField()

  def __str__(self):
    return self.name

Run the migrations to create the database table for the model:

python manage.py makemigrations

python manage.py migrate

Registering the Model in Admin

Next, we need to register our model in the admin interface. Open your admin.py file and add the following code:

from django.contrib import admin
from .models import Item

class ItemAdmin(admin.ModelAdmin):
  list_display = ('name', 'description')

admin.site.register(Item, ItemAdmin)

Creating Custom Admin Actions

Custom admin actions are simple to create. They are just regular Python functions that take three arguments: the current model admin, the request object, and a queryset of the selected items. Let's create a custom action to mark items as "reviewed". Add the following code to your admin.py file:

def mark_as_reviewed(modeladmin, request, queryset):
  queryset.update(description='Reviewed')
mark_as_reviewed.short_description = "Mark selected items as reviewed"

Now, add this action to your ItemAdmin class:

class ItemAdmin(admin.ModelAdmin):
  list_display = ('name', 'description')
  actions = [mark_as_reviewed]

Testing Your Custom Action

To test your custom action, start the development server:

python manage.py runserver

Log in to the admin interface, navigate to the Item model, select one or more items, and choose "Mark selected items as reviewed" from the action dropdown. Click the "Go" button, and the selected items should have their descriptions updated to "Reviewed".

Conclusion

Custom admin actions in Django are a powerful way to add additional functionality to your admin interface. They allow you to perform bulk operations on your model instances, making data management more efficient. With the steps provided in this tutorial, you should be able to create and test your own custom admin actions.