, , , . , TimeStampedModel, .
from hashids import Hashids
hashids = Hashids(salt='thismysalt', min_length=4)
class TimeStampedModel(models.Model):
""" Provides timestamps wherever it is subclassed """
created = models.DateTimeField(editable=False)
modified = models.DateTimeField()
def save(self, *args, **kwargs):
if not self.created:
self.created = timezone.now()
self.modified = timezone.now()
return super().save(*args, **kwargs)
class Meta:
abstract = True
class Article(TimeStampedModel):
title = models.CharField(...)
text = models.TextField(...)
hashid = models.CharField(...)
def save(self, *args, **kwargs):
super(Article, self).save(*args, **kwargs)
if self.created == self.modified:
self.hashid = hashids.encode(self.id)
self.save(update_fields=['hashid'])