मैंने official documentation on dynamically filtering ListView पढ़ा है, लेकिन अभी भी इसका उपयोग करने के तरीके के बारे में अभी भी उलझन में हूं।गतिशील रूप से Django में ListView CBV फ़िल्टर करें 1.7
मैं वर्तमान में एक साधारण मॉडल है, की यह Scholarship
कॉल:
class Scholarship(models.Model):
title = models.CharField(max_length=255)
submitted_date = models.DateField(auto_now=True, verbose_name='Date Submitted')
EXPERIENCE_LEVEL_CHOICES = (
('A', 'Any'),
('S', 'Student'),
('G', 'Graduate')
)
experience_level = models.CharField(max_length=1, choices=EXPERIENCE_LEVEL_CHOICES, default='A')
मैं का उपयोग कर, एक पृष्ठ मैं इन छात्रवृत्तियों के सभी जहां दिखा रहा हूँ है ListView:
views.py
from django.views.generic import ListView
from .models import Scholarship
class ScholarshipDirectoryView(ListView):
model = Scholarship
template_name = 'scholarship-directory.html'
urls.py
from django.conf.urls import patterns, url
from .views import ScholarshipDirectoryView
urlpatterns = patterns('',
url(r'^$', ScholarshipDirectoryView.as_view(), name='scholarship_directory'),
)
मैं इस साइट के होम पेज पर लिंक जेनरेट करने की कोशिश कर रहा हूं जो इस सूची दृश्य के फ़िल्टर किए गए संस्करणों को वापस कर देगा। उदाहरण के लिए, यदि कोई "स्नातक छात्रों के लिए छात्रवृत्ति दिखाएं" लिंक पर क्लिक करता है, तो experience_level='G'
के साथ केवल छात्रवृत्तियां दिखाई देंगी। >Scholarship.objects.filter(experience_level__exact='G')
मैं सिर्फ कैसे गतिशील रूप से एक लटकती या यूआरएल द्वारा ListView फिल्टर करने के लिए के बारे में अनिश्चित हूँ -
मुझे कोई खोल के माध्यम से इस क्वेरीसमूह लौटने समस्या है। प्लगइन का उपयोग नहीं करना चाहते हैं, बल्कि यह समझें कि Django में गतिशील रूप से पूछताछ/फ़िल्टरिंग कैसे काम करती है।
आप 'self.kwargs' के साथ' get_queryset' में kwargs तक पहुंच सकते हैं। – SunnySydeUp
ओह हाँ हाँ आप सही हैं, मैं स्वयं के बारे में भूल जाऊंगा !! मैंने अपना जवाब बदलकर प्रतिबिंबित किया (और अधिक DRY हो)। धन्यवाद ! – Serafeim
@ सेराफिम किसी भी विचार को क्वेरीफॉल्ट पर डिफ़ॉल्ट कैसे करें अगर यूआरएल में kwarg नहीं है? मैं फ़िल्टर किए गए और unfiltered – villancikos