It's probably best to do this in a custom Manager.
This code is based on this answer:
http://markmail.org/message/kwwuskco4gilej2w
You get the idea
class GetPrevNextManager(models.Manager):
def get_next_by_id(self, object):
qs = self.filter(id__gt=
object.id)
if qs.count() > 0:
return qs.order_by('id')[0]
# empty queryset
return qs
def get_prev_by_id(self, object):
qs = self.filter(id__lt=object.d)
if qs.count() > 0:
return qs.order_by('-id')[0]
# empty queryset
return qs
More information about managers:
http://docs.djangoproject.com/en/dev/topics/db/managers/
- Sævar