2011-05-27 13 views
7

यहाँ url.py में मेरे कोड है: (?P<tag>\w+) करने के लिए "tag_name" फिल्टर पारित करने के लिएDjango 1.3 गुजर मापदंडों वर्ग आधारित सामान्य सूची दृश्य के फिल्टर करने के लिए url.py में

(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')) 

मैं चाहते हैं, लेकिन मैं यह नहीं पता कि यह कैसे करें।

मैं भी एकाधिक टैग कैसे पास कर सकता हूं? इस तरह:

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

url.py "tag1+tag2+tag3" मिलना चाहिए, यह "tag1" में विभाजित, "tag2" और "tag3", और फिर उन्हें "tag__name__in" में डाल दिया:

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

असल में मैं कक्षा आधारित जेनेरिक व्यू से उलझन में हूं। कोई उपाय?

उत्तर

18

आप दृश्य की get_queryset विधि को ओवरराइट कर सकते हैं और अपने परिणामों के साथ एक क्वेरीसेट बना सकते हैं, उदाहरण के लिए।

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

यह काम किया! वाह!!! धन्यवाद! – devfeng

संबंधित मुद्दे