blob: 68e955b8c667c99f72dd0678aa972535fcb1311b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
from django.contrib.contenttypes.models import ContentType
from django.shortcuts import get_object_or_404
from django.views.generic.list_detail import object_list
from taggit.models import TaggedItem, Tag
def tagged_object_list(request, slug, queryset, **kwargs):
if callable(queryset):
queryset = queryset()
tag = get_object_or_404(Tag, slug=slug)
qs = queryset.filter(pk__in=TaggedItem.objects.filter(
tag=tag, content_type=ContentType.objects.get_for_model(queryset.model)
).values_list("object_id", flat=True))
if "extra_context" not in kwargs:
kwargs["extra_context"] = {}
kwargs["extra_context"]["tag"] = tag
return object_list(request, qs, **kwargs)
|