django利用admin模版的搜索功能
时间: 2023-08-13 17:02:18 浏览: 81
Django 的 admin 模板提供了一个方便的搜索功能,可以帮助用户快速找到他们需要的信息。实现搜索功能需要以下几个步骤:
1. 在 `admin.py` 中注册你的模型,并添加 `search_fields` 属性。例如:
```python
from django.contrib import admin
from .models import MyModel
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
search_fields = ['name', 'description']
```
这样就在 `MyModel` 的 admin 页面上添加了搜索框,并指定了搜索的字段为 `name` 和 `description`。
2. 在模板中添加搜索框。`django.contrib.admin` 应用提供了一个名为 `search_form` 的模板标签,可以方便地渲染搜索框。例如:
```html
{% extends 'admin/base.html' %}
{% block content %}
<div class="search-box">
<form method="get" action="" id="search-form">
{% csrf_token %}
{{ search_form }}
<input type="submit" value="{% trans 'Search' %}">
</form>
</div>
<!-- 省略其它内容 -->
{% endblock %}
```
这里使用了 `{{ search_form }}` 渲染了搜索框,并在表单中添加了一个提交按钮。
3. 处理搜索结果。当用户提交搜索请求时,Django 会自动将搜索关键字传递给后端,并在数据库中搜索符合条件的记录。你可以在 `ModelAdmin` 中重写 `get_queryset` 方法,来过滤搜索结果。例如:
```python
class MyModelAdmin(admin.ModelAdmin):
search_fields = ['name', 'description']
def get_queryset(self, request):
qs = super().get_queryset(request)
keywords = request.GET.get('q')
if keywords:
qs = qs.filter(name__icontains=keywords) |
qs.filter(description__icontains=keywords)
return qs
```
这里使用了 `request.GET.get('q')` 获取用户提交的搜索关键字,并在 `get_queryset` 方法中根据关键字过滤了查询集。
以上就是 Django 利用 `admin` 模板的搜索功能的基本步骤。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)