Django Model Mixins

by Antawn Jamison March 12, 2026 Public
65 views Raw Download Revisions (v1)

Revision History

No revision history recorded yet.

mixins.py python Raw
from django.db import models
from django.utils import timezone


class TimestampMixin(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True


class SoftDeleteMixin(models.Model):
    deleted_at = models.DateTimeField(null=True, blank=True)

    class Meta:
        abstract = True

    def soft_delete(self):
        self.deleted_at = timezone.now()
        self.save(update_fields=['deleted_at'])

    def restore(self):
        self.deleted_at = None
        self.save(update_fields=['deleted_at'])

    @property
    def is_deleted(self):
        return self.deleted_at is not None


class SlugMixin(models.Model):
    slug = models.SlugField(max_length=200, unique=True)

    class Meta:
        abstract = True
Skip to toolbar