Django Model Mixins
Revision History
No revision history recorded yet.
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