Django _icontains
时间: 2023-07-21 07:20:59 浏览: 45
Django _icontains是一个过滤器,用于在查询中执行 case-insensitive(不区分大小写)的部分匹配。它与_icontains的区别在于,它不区分大小写。使用_icontains和_iexact过滤器时,Django会在数据库中生成相应的SQL查询。例如,如果你想要查找所有标题中包含“django”的文章,你可以使用如下代码:
```python
Article.objects.filter(title__icontains='django')
```
这将返回所有标题中包含“django”的文章。
相关问题
数据概览是在views视图里面定义接口get_pie,学历分布使用已知的学历要求列表,采用Django _icontains模糊查询方法,对学历要求字段进行筛选并计数,并通过生成字典的方式加入edu_data中。 薪资分布是通过定义薪资的区间分布,再使用for循环结合re正则匹配出最高薪资,并且的values字典里加入字段salary_1用来保存正则提取出的最高薪资,如果匹配失败则作为无效数据,置salary_1为0,并通过多个列表筛选的方式生成数据字典并加入salary_data中。 最后使用return JsonResponse()方法将数据返回给前端的ajax请求,前端收到后台返回的数据后,则使用ECharts进行数据可视化。
好的,如果您需要在 Django 中实现数据概览接口,可以按照以下步骤进行:
1. 在 views.py 文件中定义一个名为 get_data_overview 的函数,该函数将接收一个 HTTP 请求,并返回一个 JSON 格式的响应,其中包含了数据概览所需要的数据。以下是一个示例代码:
```python
import re
from django.http import JsonResponse
from .models import Job
def get_data_overview(request):
# 获取学历要求列表和薪资区间分布
edu_list = ["本科", "硕士", "博士", "大专", "中专"]
salary_ranges = [(0, 5), (5, 10), (10, 15), (15, 20), (20, 30), (30, 50), (50, 100)]
# 统计学历分布
edu_data = {}
for edu in edu_list:
count = Job.objects.filter(edu_requirement__icontains=edu).count()
edu_data[edu] = count
# 统计薪资分布
salary_data = {}
for salary_range in salary_ranges:
salary_1_list = []
for job in Job.objects.filter(salary__icontains="{}-".format(salary_range[0])):
match = re.search(r"\d+", job.salary)
if match:
salary_1 = int(match.group())
else:
salary_1 = 0
salary_1_list.append(salary_1)
salary_1_list = list(filter(lambda x: x > 0, salary_1_list))
salary_1_list = list(filter(lambda x: x >= salary_range[0] and x < salary_range[1], salary_1_list))
salary_data["{}-{}".format(salary_range[0], salary_range[1])] = len(salary_1_list)
# 返回数据
data = {"edu_data": edu_data, "salary_data": salary_data}
return JsonResponse(data)
```
2. 在 urls.py 文件中定义一个名为 data_overview 的 URL 路径,将其映射到 get_data_overview 视图函数。以下是一个示例代码:
```python
from django.urls import path
from . import views
urlpatterns = [
path('data_overview/', views.get_data_overview, name='data_overview'),
# 其他 URL 路径
]
```
3. 在前端页面中,使用 Ajax 技术向后台发送一个 GET 请求,获取数据概览数据,并使用 ECharts 进行数据可视化。以下是一个示例代码:
```javascript
$.ajax({
url: '/data_overview/',
type: 'GET',
dataType: 'json',
success: function(data) {
// 在这里使用 ECharts 进行数据可视化
// data.edu_data 存储了学历分布数据
// data.salary_data 存储了薪资分布数据
}
});
```
class ServerExportView(LoginRequiredMixin, View): def get(self, request): search = request.GET.get('search') if search: search = request.GET.get('search').strip() servers = Server.objects.filter(Q(zctype__zctype__icontains=search) | Q(unit_code__icontains=search) | Q(name__icontains=search) | Q(registration_code__icontains=search) | Q(registration_number__icontains=search) | Q(inspection_report__icontains=search) | Q(next_inspection_date__icontains=search) | Q(owner__username__icontains=search)).\ order_by('zctype') else: servers = Server.objects.all().order_by('zctype')
这是一个 Django 中的视图函数,定义了一个名为 `ServerExportView` 的类,继承了 `LoginRequiredMixin` 和 `View`。其主要功能是根据用户的搜索条件,导出相应的设备信息。
在 `get` 方法中,首先使用 `request.GET.get('search')` 获取用户提交的搜索条件,然后通过 `.strip()` 方法去除字符串两端的空白字符。接下来,使用 Django 的查询表达式 `Q` 对多个字段进行模糊查询,查询条件包括设备类型、单位编号、设备名称、注册代码、注册证号、检验报告、下次检验日期和设备所有者的用户名。最后,使用 `order_by` 方法按照设备类型进行排序,并将查询结果赋值给 `servers` 变量。
最终,该视图函数将返回一个包含符合条件的设备信息的 Excel 文件,用于数据导出。