Возможно, вы можете создать класс BaseModel со свойством is_active, от которого наследуются все остальные ваши модели.
Затем вы захотите переопределить метод delete
в BaseModel, чтобы при вызове удаления он деактивировал его. Вы также можете добавить функцию really_delete
, которая вызывает обычную функцию удаления, если вы действительно хотите удалить ее из БД.
class BaseModel(models.Model):
class Meta:
abstract = True
is_active = models.BooleanField(default=True)
def delete(self):
self.is_active = False
self.save()
def undelete(self):
self.is_active = True
self.save(request=request)
def really_delete(self):
super().delete()