Guest User

Untitled

a guest
Jul 19th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. class SoftDeleteManager(models.Manager):
  2. def __init__(self, *args, **kwargs):
  3. self.with_deleted = kwargs.pop('deleted', False)
  4. super(SoftDeleteManager, self).__init__(*args, **kwargs)
  5.  
  6. def _base_queryset(self):
  7. return super().get_queryset().filter(deleted_at=None)
  8.  
  9. def get_queryset(self):
  10. qs = self._base_queryset()
  11. if self.with_deleted:
  12. return qs
  13. return qs.filter(is_deleted=False)
  14.  
  15.  
  16. class SoftDeleteModel(BaseModel):
  17. class meta:
  18. abstract = True
  19.  
  20. objects = SoftDeleteManager()
  21. objects_with_deleted = managers.SoftDeleteManager(deleted=True)
  22.  
  23. is_deleted = models.BooleanField(null=False, default=False)
  24.  
  25. def delete(self):
  26. self.is_deleted = True
  27. self.save()
  28.  
  29. def restore(self):
  30. self.is_deleted = False
  31. self.save()
Add Comment
Please, Sign In to add comment