Circle CI codecov Latest Version
Purpose
django-next-prev provides utilities to get the next or previous item within an ordered, filtered queryset. For example, you could display a link to the next featured post on a post detail page, or show chronological next and previous links for all published posts.
Installation
Download the source from https://pypi.python.org/pypi/django-next-prev/ and run python setup.py install, or:
> pip install django-next-prev
Django 1.8 or higher is required.
Quick start
Given this models.py:
from django.db import models
class Category(models.Model):
title = models.CharField(max_length=100)
class Post(models.Model):
title = models.CharField(max_length=100)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
created = models.DateField()
featured = models.BooleanField(default=False)
text = models.TextField()
class Meta:
# order on primary key to make sure it's unique
ordering = ('created', 'title', 'pk')
You can do the following
from next_prev import next_in_order, prev_in_order
from .models import Post
# default ordering
first = Post.objects.first()
second = next_in_order(first)
prev_in_order(second) == first # True
last = prev_in_order(first, loop=True)
# custom ordering
qs = Post.objects.all().order_by('-created', '-pk')
newest = qs.first()
second_newest = next_in_order(newest, qs=qs)
oldest = prev_in_order(newest, qs=qs, loop=True)
# filtered
qs = Post.objects.filter(featured=True)
first_featured = qs.first()
second_featured = next_in_order(first_featured, qs=qs)
Ordering considerations
Order fields must be non-nullable.
If results are inconsistent with the order of your queryset, you’re probably ordering on a non-unique combination of fields. For example, ordering = ('sort_order', ) with the duplicate sort_order values. To resolve this, add a unique field to your ordering, i.e. ordering = ('sort_order', 'pk')
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 django-next-prev-1.1.0.tar.gz.
File metadata
- Download URL: django-next-prev-1.1.0.tar.gz
- Upload date:
- Size: 4.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.8.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb79dcde18bb0c75c809224ed8656417fb3e56eb7e7064552772ffb11d203885
|
|
| MD5 |
83f74d61d4417493ef55bec62ea48a0b
|
|
| BLAKE2b-256 |
d49b00bd08cdd54e8e9cf3a321b59d8ad8bf287b7373ec06de7048696cc267b1
|