Skip to content

Instantly share code, notes, and snippets.

@xleon
Created October 23, 2013 07:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save xleon/7114120 to your computer and use it in GitHub Desktop.
Save xleon/7114120 to your computer and use it in GitHub Desktop.
Next and prev models when using django-admin-sortable. This is useful for "next" and "prev" buttons of a project detail for example
from adminsortable.models import Sortable
from django.template.defaultfilters import slugify
class Project(Sortable):
name = models.CharField("Name", max_length=255)
slug = models.SlugField(max_length=255, editable=False)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Project, self).save(*args, **kwargs)
<div class="navigation"><a href="{% url parent %}" class="btn pull-left back">Back</a><!-- /.btn -->
{% if next %}
<a href="{% url parent %}{{ next.slug }}" class="btn pull-right rm0 nav-next-item">Next</a><!-- /.btn -->
{% endif %}
{% if prev %}
<a href="{% url parent %}{{ prev.slug }}" class="btn pull-right rm5 nav-prev-item">Previous</a><!-- /.btn -->
{% endif %}
</div>
from django.shortcuts import render_to_response
from django.template import RequestContext
from main.models import *
from django.http import Http404
def project_view(request, project_slug):
try:
project = Project.objects.get(slug=project_slug)
except:
raise Http404
data = {'project': project}
try:
data['prev'] = Project.objects.get(order=project.order - 1)
except:
data['prev'] = Project.objects.get(order=Project.objects.count() - 1)
try:
data['next'] = Project.objects.get(order=project.order + 1)
except:
data['next'] = Project.objects.get(order=1)
return render_to_response("template.html", data, context_instance=RequestContext(request))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment