我读过official documentation on dynamically filtering ListView,但我仍然对如何实际使用它感到困惑。在Django 1.7中动态过滤ListView CBV
我现在有一个简单的模型,我们称之为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'),
)
我试图在网站的主页上生成链接,该链接将返回此ListView的过滤版本。例如,如果有人点击“显示研究生奖学金”链接,则只会显示experience_level='G'
的奖学金。
我没有问题,通过外壳返回该查询集 - >Scholarship.objects.filter(experience_level__exact='G')
我只是不知道如何通过一个下拉列表或URL动态筛选ListView控件。不想使用插件,而是了解动态查询/过滤在Django中的工作方式。
您还可以用'self.kwargs'在'get_queryset'中访问kwargs。 – SunnySydeUp 2014-09-06 03:57:12
Ooops是的,你是对的,我忘了self.kwargs!我改变了我的答案,以反映(并更干)。谢谢 ! – Serafeim 2014-09-06 07:59:24
@Serafeim任何想法如果默认为查询集如果kwarg不在url中?我想使用相同的URL conf过滤和未过滤 – villancikos 2016-08-12 01:24:06