django - django_filter 搜索栏的布尔字段
问题描述
我试图在搜索栏上显示一个选项,用户可以在其中为下面的布尔字段(和)选择一个True
或False
值。lead_register
finished_leveltest
class LevelTestFilter(django_filters.FilterSet):
class Meta:
model = LevelTest
fields = {
'first_name': ['icontains'],
'username': ['icontains'],
'phone_number': ['icontains'],
'email': ['exact'],
'lead_register': ['exact'],
'finished_leveltest': ['exact'],
}
现在,我输入了,exact
因为我不知道该放什么。我希望你们能帮忙。非常感谢!
解决方案
见https://django-filter.readthedocs.io/en/master/guide/usage.html#overriding-default-filters
filter_overrides
您可以通过添加以下内容来覆盖所有表单的布尔值Meta
:
class LevelTestFilter(django_filters.FilterSet):
class Meta:
model = LevelTest
fields = {
'first_name': ['icontains'],
'username': ['icontains'],
'phone_number': ['icontains'],
'email': ['exact'],
'lead_register': ['exact'],
'finished_leveltest': ['exact'],
}
filter_overrides = {
models.BooleanField: {
'filter_class': django_filters.BooleanFilter,
'extra': lambda f: {
'widget': forms.CheckboxInput,
},
},
}
或者,您可以只自定义单个字段,如果您以一种或另一种方式修改其中的大部分,这将非常有用:
class LevelTestFilter(django_filters.FilterSet):
lead_register__exact = django_filters.BooleanFilter(
field_name='lead_register',
label='A more expressive label',
lookup_expr='exact',
widget=forms.CheckboxInput,
)
...
class Meta:
model = LevelTest
fields = {
'first_name': ['icontains'],
'username': ['icontains'],
'phone_number': ['icontains'],
'email': ['exact'],
'lead_register': ['exact'],
'finished_leveltest': ['exact'],
}
推荐阅读
- c# - 检测 Visual Studio 编译(对于 C++ 文件,而不是构建)开始和结束事件
- javascript - 带有 Vue 和 Vuetify 的对话框内的变量表单
- php - php:如何将 3 条数据存储在一个数组的一个位置?
- react-native - 渲染 Snackbar 会导致单元测试失败
- .net-core - .net-core 3 是否有 ssh nuget 包?
- google-apps-script - 如何在移动设备上运行应用程序脚本,一个脚本工作另一个不工作
- angular - Angular - 如何使 canActivate 等待承诺响应?
- python - 在 Python 中从 SharePoint 加载文件
- android - 在 Android 7 上实现 androidx 生物识别库后字体缩放不起作用
- php - 防止 Select sql 从 DB PHP 中选择相同的数据