Django-маркировка: захват объектов путем указания нескольких тегов? - PullRequest
1 голос
/ 20 июня 2010

У меня в настоящее время есть запись в urls.py, которая выбирает одиночные постоянные ссылки для моих ошибок:

from django.conf.urls.defaults import *

from tagging.views import tagged_object_list

from bugs.models import Bug

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Example:
    # (r'^workarounds/', include('workarounds.foo.urls')),

    # Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
    # to INSTALLED_APPS to enable admin documentation:
    # (r'^admin/doc/', include('django.contrib.admindocs.urls')),

    (r'^$', 'django.views.generic.simple.direct_to_template', {'template':'homepage.html'}),

    (r'^bugs/(?P<slug>[-\w]+)/$', 'bugs.views.bug_detail'),
    (r'^bugs/tagged/(?P<tag>[^/]+)/$', 
    'tagging.views.tagged_object_list',
    {
        'queryset_or_model': Bug,
        'template_name' : 'tag/lone.html'}),
    # Uncomment the next line to enable the admin:
    (r'^admin/', include(admin.site.urls)),
)

Так что, если я укажу URL, скажем, bugs/tagged/firefox, это вызовет теги firefox. Как я могу сделать это отфильтровать по нескольким тегам? Например: firefox+css вернет все объекты, отмеченные firefox и css.

1 Ответ

3 голосов
/ 21 июня 2010

Вам придется создать свой собственный вид вместо использования tagging.views.tagged_object_list.

(r'^bugs/tagged/(?P<tags>[-\w+]+)/$', your_tag_view)

По вашему мнению, получите список тегов, которые вы ищете:

tags = tags.split('+')

Затем используйте запрос TaggedItem.objects.get_by_model, который удобно примет список тегов:

from tagging.models import TaggedItem
bugs = TaggedItem.objects.get_by_model(Bug, tags)
...