import uuid from django.conf import settings from django.db import models from django.utils.translation import gettext_lazy as _ user_model = settings.AUTH_USER_MODEL class BaseModel(models.Model): uid = models.UUIDField( verbose_name=_("UUID"), unique=True, default=uuid.uuid4, editable=False ) created_by = models.ForeignKey( to=user_model, verbose_name=_("Created by"), null=True, blank=True, related_name="%(class)s_created", on_delete=models.SET_NULL, ) created_at = models.DateTimeField( verbose_name=_("Created at"), auto_now_add=True, editable=False, db_index=True, ) updated_by = models.ForeignKey( to=user_model, verbose_name=_("Updated by"), null=True, blank=True, related_name="%(class)s_updated", on_delete=models.SET_NULL, ) updated_at = models.DateTimeField( verbose_name=_("Updated at"), auto_now=True, null=True, blank=True ) class Meta: abstract = True