Django Model Mixins

by Antawn Jamison March 12, 2026 Public
64 views Raw Download Revisions (v1)
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