class pro(models.Model):
STATUS_CHOICES = (
('hi', 'hi'),
('bye', 'bye'),
('yo', 'yo'),
)
status = models.CharField(max_length=20, choices=STATUS_CHOICES)
import django_filters
class customfilter(django_filters.FilterSet):
# insert some code here
class Meta:
model = pro
fields = ['status',]
class proview(FilterView):
template_name="1.html"
filterset_class = customfilter
<form action="" method="get">
{{ filter.form.as_p }}
<input type="submit" />
</form>
如何让模板中的下拉菜单呈现这样的选择?
('hi')
('bye')
('yo')
('hi or bye")
您可以覆盖过滤器类的构造函数,并提供自定义选择来过滤这种形式的窗体。
class customfilter(django_filters.FilterSet):
# insert some code here
class Meta:
model = pro
fields = ['status', ]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.form.fields['status'].choices = (
('hi', 'hi'),
('bye', 'bye'),
('yo', 'yo'),
('hi or bye', 'hi or bye'),
)