首页 > 解决方案 > Django为没有类/模型的视图添加下拉过滤器

问题描述

我有一个映射到 url 的方法urls.py

urlpatterns = [
    url(r'^mydir/statistics', statistics_view, name="Statistics")
]

然后在mydir/statistics/views.py我有方法:

def statistics_view(request):
    list_mystuff = Mytable.objects.all() #Mytable is defined in models
    ....
    #lots of code here to assign "enriched_models" data structure
    enriched_models = {bunch of stuff}
    ......
    return render(request, 'statistics.html', {"statistics_enriched_models": enriched_models})

一切正常,一切都使用statistics.html模板呈现。

现在我需要通过 Mytable 的一个字段来实现一个下拉过滤器。对于类,我必须在 models.py 中为 Statistics 创建类,StatisticsAdmin 作为代理模型admin.py,注册它们,并 list_filter=["myfield",]在 StatisticsAdmin 中设置

有没有办法设置下拉过滤器(使用 list_filters 或其他)并直接呈现下拉列表而不创建类,就像我已经拥有的(填充模板的方法)?

标签: pythondjangofilterviewdropdown

解决方案


更新

最后我使用了 django-filter 工具:https ://django-filter.readthedocs.io/en/master/index.html

用于下拉控件的过滤器是 django_filters.ChoiceFilter 。工作得很好。


推荐阅读