Thursday, 15 August 2013

Trouble using "Slug" in Django DetailView

Trouble using "Slug" in Django DetailView

models.py
class Tag(models.Model):
name = models.CharField(max_length=64, unique=True)
slug = models.SlugField(max_length=255, unique=True)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Tag, self).save(*args, **kwargs)


urls.py
url(r'^tag/(?P<slug>[A-Za-z0-9_\-]+)/$', TagDetailView.as_view(),
name='tag_detail'),


views.py
class TagDetailView(DetailView):
template_name = 'tag_detail_page.html'
context_object_name = 'tag'
def get_context_data(self, **kwargs):
context = super(TagDetailView, self).get_context_data(**kwargs)
context['item_list'] = self.object.item_set.all()
return context


Well, I thought this would work without any problem, because Django's
generic DetailView will look for "slug" or "pk" to fetch its object.
However, navigating to "localhost/tag/RandomTag" gives me an error:
error:
ImproperlyConfigured at /tag/RandomTag/
TagDetailView is missing a queryset. Define TagDetailView.model,
TagDetailView.queryset, or override TagDetailView.get_queryset().

Does anyone know why this is happening...???
Thanks!!!

No comments:

Post a Comment