2011-05-27 30 views
7

İşte url.py benim kod url.py sınıf temelli jenerik liste görünümünün filtrelemek için: (?P<tag>\w+) için "tag_name" filtresi geçmesineDjango 1.3 geçen parametreleri

(r'^tag/(?P<tag>\w+)/$', 
    ListView.as_view(
     model=List, 
     context_object_name='some_list', 
     queryset=List.objects.filter(tag__name__in=[tag_name]), 
     template_name='some_list.html')) 

İsterdim ama nasıl yapılacağını bilmiyorum.

Ayrıca birden çok etiketi nasıl aktarabilirim? Şunun gibi:

http://www.mysite.com/tag/tag1+tag2+tag3 

url.py, "tag1" bölmek "tag2" ve "tag3" "tag1+tag2+tag3" almalısınız ve daha sonra "tag__name__in" koydu:

queryset=List.objects.filter(tag__name__in=[tag1, tag2, tag3]) 

Temelde sınıf tabanlı genel görünüm ile kafam karıştı. Herhangi bir fikir?

cevap

18

Görünümün get_queryset yönteminin üzerine yazabilir ve sonuçlarınızla birlikte bir queryset oluşturabilirsiniz.

from django.views.generic.list import ListView 

class MyList(ListView): 
    def get_queryset(self): 
     tag_list = self.kwargs['tags'].split('+') 
     return List.objects.filter(tag__name__in=tag_list) 

# urls.py 
... 
url(r'tag/(?<tags>[\w\+]+)/', MyList.as_view()) 
+0

Çalıştı! Vay!!! Teşekkürler! – devfeng