栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

今天的Django教训汇总:通过 Q 对象完成复杂查询,利用分号多条件查询-20211020

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

今天的Django教训汇总:通过 Q 对象完成复杂查询,利用分号多条件查询-20211020

通过 Q 对象完成复杂查询,利用分号多条件查询

views.py

from django.shortcuts import render
from .models import Employee
from django.db.models import Q
import re

# Create your views here.
from django.http import HttpResponse


def index(request):
     return HttpResponse("Hello, world. You're at the polls index.")


# 建立查询结果界面
def search_results(request):
    if 'eid' in request.GET and request.GET['eid']:
        #建立工号查询条件,可多条件查询
        eid = request.GET['eid']
        print(eid)
        if ';' in eid:
            eid_list = re.split(r';', eid)
            if len(eid_list) == 2:
                str_list = Q(eid__contains=eid_list[0]) | Q(eid__contains=eid_list[1])
            elif len(eid_list) == 3:
                str_list = Q(eid__contains=eid_list[0]) | Q(eid__contains=eid_list[1]) | Q(eid__contains=eid_list[2])
            elif len(eid_list) == 4:
                str_list = Q(eid__contains=eid_list[0]) | Q(eid__contains=eid_list[1]) | Q(eid__contains=eid_list[2]) | Q(eid__contains=eid_list[3])
            elif len(eid_list) == 5:
                str_list = Q(eid__contains=eid_list[0]) | Q(eid__contains=eid_list[1]) | Q(eid__contains=eid_list[2]) | Q(eid__contains=eid_list[3]) | Q(eid__contains=eid_list[4]) 
            employee_list = Employee.objects.filter(str_list)

        else:
            employee_list = Employee.objects.filter(eid=eid)
        
        return render(request, 'PPDASH/search_results.html',context={'employee_list': employee_list, 'query': eid})
    
    elif 'dept' in request.GET and request.GET['dept']:
    #建立部门查询条件,可多条件查询
        dept = request.GET['dept']
        if ';' in dept:
            dept_list = re.split(r';', dept)
            if len(dept_list) == 2:
                str_list = Q(dept_code__contains=dept_list[0]) | Q(dept_code__contains=dept_list[1])
            elif len(dept_list) == 3:
                str_list = Q(dept_code__contains=dept_list[0]) | Q(dept_code__contains=dept_list[1]) | Q(dept_code__contains=dept_list[2])
            elif len(dept_list) == 4:
                str_list = Q(dept_code__contains=dept_list[0]) | Q(dept_code__contains=dept_list[1]) | Q(dept_code__contains=dept_list[2]) | Q(dept_code__contains=dept_list[3])
            elif len(dept_list) == 5:
                str_list = Q(dept_code__contains=dept_list[0]) | Q(dept_code__contains=dept_list[1]) | Q(dept_code__contains=dept_list[2]) | Q(dept_code__contains=dept_list[3]) | Q(dept_code__contains=dept_list[4]) 
            #employee_list = Employee.objects.filter(Q(dept_code__contains=dept_list[0]) | Q(dept_code__contains=dept_list[1]))
            employee_list = Employee.objects.filter(str_list)

        else:
            employee_list = Employee.objects.filter(dept_code__contains=dept)
        return render(request, 'PPDASH/search_results.html',context={'employee_list': employee_list, 'query': dept})
    elif 'function' in request.GET and request.GET['function']:
        function = request.GET['function']
        employee_list = Employee.objects.filter(function=function)
        return render(request, 'PPDASH/search_results.html',context={'employee_list': employee_list, 'query': function})
    else:
        return render(request, 'PPDASH/search_form.html',context={})




def search_results2(request):
    return HttpResponse("Hello, world. You're at the polls index.")


def search_results3(request):
    employee_list = Employee.objects.order_by('-dept_code').all()[:10]
    print(employee_list)
    context = {'employee_list':employee_list}
    return render(request,'PPDASH/search_results3.html',context=context)

search_form.html



    search_form



    
请输入工号 请输入部门 请输入功能

models.py

from django.db import models
from django.core.validators import MaxValuevalidator, MinValuevalidator 


# Create your models here.
class Employee(models.Model):
    eid = models.CharField(max_length=200,null=True)
    name = models.CharField(max_length=200,null=True)
    dept_code = models.CharField(max_length=200,null=True)
    level_opt = (
        (u'课级', u'课级'),
        (u'部级', u'部级'),
    )
    level = models.CharField(max_length=200,choices=level_opt,null=True)
    function_opt = (
        (u'工程类', u'工程类'),
        (u'生产类', u'生产类'),
        (u'品质类', u'品质类'),
        (u'资材类', u'资材类'),
        (u'托管', u'托管'),
        (u'其他', u'其他'),
    )   
    function = models.CharField(max_length=200,choices=function_opt,null=True)
    batch_opt = (
        (u'WZS-P1', u'WZS-P1'),
        (u'WZS-P3', u'WZS-P3'),
        (u'WZS-P6', u'WZS-P6'),
        (u'WZS-WT其他', u'WZS-WT其他'),
    )   
    batch = models.CharField(max_length=200,choices=batch_opt,null=True)
    mail = models.CharField(max_length=200,null=True, verbose_name=r'邮箱地址',)
    score_jieshoufankui = models.IntegerField(default=0, verbose_name=r'接纳反馈', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_xueximinruidu = models.IntegerField(default=0, verbose_name=r'学习敏锐度', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_jieguodaoxiang = models.IntegerField(default=0, verbose_name=r'结果导向', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_quanjusiwei = models.IntegerField(default=0, verbose_name=r'全局思维', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_shiyingli = models.IntegerField(default=0, verbose_name=r'适应力', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_chengjiutaren = models.IntegerField(default=0, verbose_name=r'成就他人', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_lingdaoyiyuan = models.IntegerField(default=0, verbose_name=r'领导意愿', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_pinghengrenjiyurenwu = models.IntegerField(default=0, verbose_name=r'平衡人际与任务', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_fudao = models.IntegerField(default=0, verbose_name=r'辅导', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_shouquanweize = models.IntegerField(default=0, verbose_name=r'授权委责', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_jianlichenggongtuandui = models.IntegerField(default=0, verbose_name=r'建立成功团队', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_guanlirenjiguanxi = models.IntegerField(default=0, verbose_name=r'管理人际关系', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_yingxiangli = models.IntegerField(default=0, verbose_name=r'影响力', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_jianlihuobanguanxi = models.IntegerField(default=0, verbose_name=r'建立伙伴关系', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')
    score_jihuayuzuzhi = models.IntegerField(default=0, verbose_name=r'计划与组织', validators=[MinValuevalidator(0), MaxValuevalidator(100)],help_text='请输入0-100的整数')


    def __str__(self):
        return str(self.name)



# 定义后台上传Employee文件的接口
class import_Employee(models.Model):
    file = models.FileField(upload_to='file')
    name = models.CharField(max_length=50,verbose_name=r'文件名')

    class meta:
        ordering = ['name']

    def __str__(self):
        return str(self.name)

urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('search_results/', views.search_results, name='search_results'),
    path('search_results2/', views.search_results2, name='search_results2'),
    path('search_results3/', views.search_results3, name='search_results3'),
]




转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339378.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号