python / intermediate
Snippet
Eigene QuerySet-Methoden zur Kapselung von Domänenlogik
Durch Unterklassenbildung von Djangos models.QuerySet können wiederverwendbare, domänenspezifische Datenbankabfragen direkt über as_manager() am Model Manager verkettet werden.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from django.db import modelsclass ArticleQuerySet(models.QuerySet):def published(self):return self.filter(status='published')def written_by(self, author):return self.filter(author=author)class Article(models.Model):title = models.CharField(max_length=200)status = models.CharField(max_length=20)author = models.CharField(max_length=100)objects = ArticleQuerySet.as_manager()
django
Erklärung
1
class ArticleQuerySet(models.QuerySet):
Definiert eine eigene QuerySet-Klasse, die von Djangos Basis-QuerySet erbt.
2
def published(self):
Kapselt eine spezifische Filter-Operation in eine wiederverwendbare QuerySet-Methode.
3
objects = ArticleQuerySet.as_manager()
Stellt die eigenen QuerySet-Methoden direkt über den Standard-Manager des Models bereit.