【发布时间】:2024-01-22 17:15:01
【问题描述】:
我已经阅读了official documentation on dynamically filtering ListView,但仍然对如何实际使用它感到困惑。
我目前有一个简单的模型,我们称之为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' 的奖学金。
我通过 shell 返回这个查询集没有问题 -> Scholarship.objects.filter(experience_level__exact='G')
我只是不确定如何通过下拉列表或 URL 动态过滤 ListView。不打算使用插件,而是要了解 Django 中动态查询/过滤的工作原理。
【问题讨论】:
标签: python django listview get django-views