python / intermediate
Snippet
Überschreiben von Model Manager get_queryset für Soft Deletion
Das Überschreiben von get_queryset in einem eigenen Manager filtert automatisch als gelöscht markierte Datensätze heraus und verbirgt soft-gelöschte Objekte vor Standard-Abfragen.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
from django.db import modelsclass SoftDeleteManager(models.Manager):def get_queryset(self):return super().get_queryset().filter(is_deleted=False)class Product(models.Model):name = models.CharField(max_length=100)is_deleted = models.BooleanField(default=False)objects = SoftDeleteManager()all_objects = models.Manager()
django
Erklärung
1
class SoftDeleteManager(models.Manager):
Erstellt eine eigene Manager-Klasse, die vom Basis-Manager von Django erbt.
2
def get_queryset(self):
Überschreibt die Basismethode, die für das Zurückgeben von Standard-QuerySets zuständig ist.
3
all_objects = models.Manager()
Stellt einen expliziten zweitrangigen Manager bereit, um alle Elemente inklusive soft-gelöschter abzufragen.