我正在阅读django文档中的过滤器并遇到了多选过滤器。
<body>
<form id="Form1" method="post" runat="server">
<table id="Table1">
<tr>
<td>
<iframe id="iframe1">
</iframe>
<uc1 id="uc1"></uc1>
</td>
</tr>
<tr>
<td>
<asp:Panel id="Panel">
</asp:Panel>
<uc1 id="uc2">
</uc1>
</td>
<td>
<iframe id="iframe2">
</iframe>
</td>
</tr>
</table>
</form>
</body>
在我的应用程序中,我有一个十进制字段代表我的产品型号中的价格。我想知道是否有一种方法可以使用多选过滤器来选择价格范围,例如,
class User(models.Model):
username = models.CharField(max_length=255)
first_name = SubCharField(max_length=100)
last_name = SubSubCharField(max_length=100)
status = models.IntegerField(choices=STATUS_CHOICES, default=0)
STATUS_CHOICES = (
(0, 'Regular'),
(1, 'Manager'),
(2, 'Admin'),
)
class F(FilterSet):
status = ChoiceFilter(choices=STATUS_CHOICES)
class Meta:
model = User
fields = ['status']
我知道范围过滤器,但我需要多选过滤器的功能,并且能够选择多个范围。
答案 0 :(得分:0)
由于您尝试按多个范围进行过滤,因此此处不存在任何标准行为。最好的办法是在多选过滤器上使用method
参数来提供自定义行为。
class F(django_filters.FilterSet):
price = MultipleChoiceFilter(choices=(('$': '$', ...)), method='filter_price')
def filter_price(self, queryset, name, value):
# value should be a list since it's multiple choice
for price in value:
if price == '$':
...
return ...