Extended QuerySets for Django
Project description
ExtendedQuerySets
ExtendedQuerySets is meant to simplify the way to retrieve one object from db using Django QuerySets.
Installation:
$ pip install extquerysets
Examples:
For the following examples assume that we have a model Player, and we've implemented custom Manager and QuerySet for that model.
Task 1: Retrieve one object or return None if object doesn't exist.
Usual way:
try:
winner = Player.objects.winner()
except Player.DoesNotExist:
winner = None
Using ExtendedQuerySets:
winner = Player.objects.winner_or_none()
Task 2: Retrieve one object or raise Http404 if object doesn't exist.
Usual way:
try:
winner = Player.objects.winner()
except Player.DoesNotExist:
raise Http404
Using ExtendedQuerySets:
winner = Player.objects.winner_or_404()
Usage:
models.py
from django.db import models
from .querysets import PlayerQuerySet
class Player(model.Model):
name = models.CharField(_('Name'), max_length=12)
is_winner = models.BooleanField(_('Is winner'), default=False)
objects = PlayerQuerySet.as_manager()
querysets.py
from extquerysets.base import CustomQuerySet
from extquerysets.decorators import or_404
from extquerysets.decorators import or_none
class PlayerQuerySet(CustomQuerySet):
@or_404
@or_none
def get(self, *args, **kwargs):
return super().get(*args, **kwargs)
@or_404
@or_none
def winner(self):
return self.get(is_winner=True)
Now you can retrieve Player instance:
from .models import Player
...
player = Player.objects.winner_or_none()
player = Player.objects.winner_or_404()
player = Player.objects.filter(name__icontains='Tom').winner_or_none()
player = Player.objects.filter(name__icontains='Tom').winner_or_404()
player = Player.objects.get_or_none(pk=10)
player = Player.objects.get_or_404(pk=10)
...
More info about custom Managers and QuerySets: https://docs.djangoproject.com/en/2.0/topics/db/managers/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file extquerysets-0.0.4.tar.gz.
File metadata
- Download URL: extquerysets-0.0.4.tar.gz
- Upload date:
- Size: 3.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4d1dc88e14413327b74ec3c4b907fee4d6071f5a760a867107ef515835c9cb1
|
|
| MD5 |
4c7cf8fad2a9d00c0275cf1e7a856980
|
|
| BLAKE2b-256 |
4ebf2e64bf3909bc0049bea25c45eb5d87bd6b6a92da5a65ce90ff389db2024f
|