依赖于过滤器的下拉列表



以前,我根据这篇博文在我的模型窗体(汽车制造到制造模型)上实现了一个依赖下拉列表。现在,我的网站上有一个部分供用户查看带有过滤器的汽车,以便制造商建模。唯一的问题是,如果您选择制造商,您将拥有每个模型的列表,而不仅仅是链接到该制造商的模型。如果您能指出我如何在过滤器上创建依赖下拉列表的正确方向。

滤波器

class carFilter(django_filters.FilterSet):
class Meta: 
model = Post
fields = 'manufacture', 'model'

您可以通过在Meta中指定筛选器集来为筛选器集提供自定义表单,如文档中所述。之后,这将是一个与您链接的博客文章中描述的过程类似的过程。因此,您的表单实现将如下所示:

from django import forms

class CarFilterForm(forms.Form):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Assuming model name as "model", if it really is that you might want to change it
self.fields['model'].queryset = Model.objects.none()
if 'manufacture' in self.data:
try:
manufacture_id = int(self.data.get('manufacture'))
self.fields['model'].queryset = Model.objects.filter(manufacture_id=manufacture_id)
except (ValueError, TypeError):
pass
# No pre-existing instance since this is a form for filtering, so the other condition is not needed

class carFilter(django_filters.FilterSet):
class Meta: 
model = Post
fields = 'manufacture', 'model'
form = CarFilterForm

在此之后,您将编写JavaScript和类似于博客文章中描述的视图。


注意:理想情况下,类名应该在PascalCase而不是camelCasecarFilter因此您应该使用CarFilter.请参阅 PEP 8 -- 风格指南 蟒蛇代码

最新更新