目的
django-next-prev提供實用程式來擷取有序的過濾查詢集中的下一個或上一個項目。例如,您可以在文章詳細資訊頁面上顯示指向下一個精選文章的連結,或者顯示所有已釋出文章的按時間順序排列的下一個和上一個連結。
安裝
從https://pypi.python.org/pypi/django-next-prev/下載下傳源代碼 并運作python setup.py install
或者
pip install django-next-prev
需要Django 1.8或更高版本。
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()
text = models.TextField()
class Meta:
ordering = ('created', 'title')
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')
newest = qs.first()
second_newest = next_in_order(newest, qs=qs)
oldest = prev_in_order(newest, qs=qs, loop=True)