I'm try to get rid of home-brew solution to favor more standard ones. My previous pattern:
class MarkDeleteManager(models.Manager):
use_for_related_fields = True
def get_queryset(self):
if "instance" in self._hints:
return super(MarkDeleteManager, self).get_queryset()
return super(MarkDeleteManager, self).get_queryset().filter(deleted=False)
def all_with_deleted(self):
return super(MarkDeleteManager, self).get_queryset()
def deleted_set(self):
return super(MarkDeleteManager, self).get_queryset().filter(deleted=True)
def using(self, *args, **kwargs):
''' if a specific record was requested, return it even if it's deleted '''
return self.all_with_deleted().using(*args, **kwargs)
I'd like to replace this with django-model-util's SoftDeletableModel
but I don't see any all_with_deleted
like functionality in the SoftDeletableManagerMixin
- it only overrides get_queryset
and that's it. My architecture is decentralized, and when I notify other nodes about soft deletions I need to access those.