django为列增加搜索
时间: 2023-10-15 07:02:59 浏览: 35
你可以使用Django自带的Filter来为列增加搜索功能。首先,在你的app中创建一个filters.py文件,然后定义一个Filter类。例如,如果你想要为一个名为"name"的列增加搜索功能,你可以这样定义一个Filter类:
```python
import django_filters
from .models import YourModel
class YourFilter(django_filters.FilterSet):
name = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = YourModel
fields = ['name']
```
在这个例子中,我们使用了CharFilter来定义"name"列的搜索条件,lookup_expr参数设置为'icontains'以实现不区分大小写的模糊搜索。
然后,在你的视图函数中,你需要将这个Filter类和你的查询集合并起来,并将过滤后的结果传递给模板。例如:
```python
from django.shortcuts import render
from .models import YourModel
from .filters import YourFilter
def your_view(request):
queryset = YourModel.objects.all()
f = YourFilter(request.GET, queryset=queryset)
filtered_queryset = f.qs
return render(request, 'your_template.html', {'filter': f, 'filtered_queryset': filtered_queryset})
```
在模板中,你可以使用Django自带的模板标签来显示搜索表单和过滤后的结果。例如:
```html
{% load bootstrap4 %}
{% bootstrap_form filter.form layout='inline' %}
{% for obj in filtered_queryset %}
{{ obj.name }}
{% endfor %}
```
这样,你就可以为列增加搜索功能了。