python / expert
Snippet
Dynamische Methodenkomposition auf Benutzerdefinierten Django-QuerySets
Die Nutzung von Mehrfachvererbung in einer Factory-Funktion ermöglicht die dynamische Komposition mehrerer benutzerdefinierter Django-`QuerySet`-Klassen in eine einheitliche `Manager`-Instanz.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from django.db import modelsclass SoftDeleteQuerySet(models.QuerySet):def active(self):return self.filter(is_deleted=False)class AuditQuerySet(models.QuerySet):def verified(self):return self.filter(is_verified=True)def compose_querysets(*queryset_classes):class ComposedQuerySet(*queryset_classes):passreturn ComposedQuerySet.as_manager()
django
Erklärung
1
class SoftDeleteQuerySet(models.QuerySet):
Definiert wiederverwendbare Filterlogik in einer QuerySet-Unterklasse.
2
class ComposedQuerySet(*queryset_classes):
Erstellt dynamisch eine kombinierte QuerySet-Klasse mittels Mehrfachvererbung.
3
return ComposedQuerySet.as_manager()
Wandelt die kombinierte QuerySet-Klasse in eine Django-Manager-Factory um.