Поняв, как работает get_object (), я наконец-то заставил его работать. Я добавил несколько импортов:
from django.core.exceptions import ObjectDoesNotExist
from tagging.models import Tag, TaggedItem
class TagFeed(LatestEntriesFeed):
def get_object(self, bits):
if len(bits) != 1:
raise ObjectDoesNotExist
return Tag.objects.get(name__exact=bits[0])
def title(self, obj):
return "%s: Latest entries under the tag '%s'" % (current_site.name, obj.name)
def description(self, obj):
return "%s: Latest entries under the tag '%s'" % (current_site.name, obj.name)
def items(self, obj):
return TaggedItem.objects.get_by_model(Entry, obj.name)
Допустим, я захожу в / feeds / tag / thetagnamehere /, тогда get_object извлекает объект тега с именем "thetagnamehere". Метод items () будет затем извлекать записи под тегом «thetagnamehere». Я также создал feeds / tag_title.html и feeds / tag_description.html в своем каталоге шаблонов. В моем проекте urls.py:
feeds = {
'latest': LatestEntriesFeed,
'tag': TagFeed,
}
(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed',
{'feed_dict': feeds}, ),
Вот и все. Теперь я могу генерировать канал для определенного тега в моей боковой панели. Надеюсь, это поможет.