文章目录

  • Django ORM 查询重复记录并显示
    • 废话不谈,两横一竖开始
    • 开始正题
    • 下午继续vue

Django ORM 查询重复记录并显示

写了简单的项目信息录入系统,让同事便于录入。
同事要求 根据指定1-3个字段查询数据是否有重复,并将重复的记录信息显示出来。
先写后台

废话不谈,两横一竖开始

时间长有没有写了,先复习一下 HTTP的request:

def review_http(request):data01 = request.method  # 请求中使用的HTTP方法的字符串表示,全部大写表示。data02 = request.GET  # 包含所有HTTP,GET参数的类字典对象data03 = request.POST  # 包含所有HTTP,POST参数的类字典对象data04 = request.path  # 返回用户访问的路径data05 = request.get_full_path()  # 获取当前请求路径并包含查询参数data06 = request.body  # 请求体,byte类型,request.POST的数据就是从body里面提取的data07 = request.META  # 所有请求头信息,字典类型数据,所有请求头的键都加上了一个HTTP_键名称print(data07)return HttpResponse('OK')

开始正题

def check_repeat(request):# 分组查询# 获取数据记录的总数record_total = Tab1.objects.all().count()# 通过去重获取剔除重复的记录总数distinct_total = Tab1.objects.all().values('jd').distinct().count()# # 单个字段的测试===================# # 通过分组获取重复的井段# repeat_data = Tab1.objects.all().values('jd').annotate(a=Count('jd')).filter(a__gt=1).values('jd')# # 获取重复井段的总数# repeat_total = repeat_data.count()# # 通过列表推导式将重复的井段转为列表# repeat_data_list = [i['jd'] for i in repeat_data]# # 根据重复井段的list获取有重复井段的记录信息# repeat_objs = Tab1.objects.filter(jd__in=repeat_data_list).values()# # 两个字段的测试===================# # 获取数据记录的总数# record_total = Tab1.objects.all().count()# # 通过去重获取剔除重复的记录总数# distinct_total = Tab1.objects.all().values('jd').distinct().count()# # 通过分组获取重复的井段# repeat_data = Tab1.objects.all().values('jd', 'cdm').annotate(a=Count('jd') and Count('cdm')).filter(a__gt=1).values('jd')# # 获取重复井段和长度的总数# repeat_total = repeat_data.count()# # 通过列表推导式将重复的井段和长度转为列表# repeat_data_list = [i['jd'] for i in repeat_data]# # 根据重复井段的list获取有重复井段的记录信息# repeat_objs = Tab1.objects.filter(jd__in=repeat_data_list).values()# print('记录总数:%d,剔除井段重复后总数:%d,有重复的记录数:%d' % (record_total, distinct_total, repeat_total))# str_list = ['jd', 'cdm']str_list = ['xmmc', 'jd', 'cmd']if len(str_list) == 3:repeat_data = Tab1.objects.all().values('xmmc', 'jd', 'cdm').annotate(a=(Count('jd') and Count('cdm') and Count('xmmc'))).filter(a__gt=1).values('jd')elif len(str_list) == 2:if 'cdm' in str_list:# 通过分组获取重复的井段repeat_data = Tab1.objects.all().values('jd', 'cdm').annotate(a=(Count('jd') and Count('cdm'))).filter(a__gt=1).values('jd')else:repeat_data = Tab1.objects.all().values('jd', 'xmmc').annotate(a=(Count('jd') and Count('xmmc'))).filter(a__gt=1).values('jd')else:# 通过分组获取重复的井段repeat_data = Tab1.objects.all().values('jd').annotate(a=Count('jd')).filter(a__gt=1).values('jd')# 获取重复井段的总数repeat_total = repeat_data.count()# 通过列表推导式将重复的井段转为列表repeat_data_list = [i['jd'] for i in repeat_data]# 根据重复井段的list获取有重复井段的记录信息repeat_objs = Tab1.objects.filter(jd__in=repeat_data_list).values()print('记录总数:%d,剔除井段重复后总数:%d,有重复的记录数:%d' % (record_total, distinct_total, repeat_total))return HttpResponse('OK')

后端写完了,下午写前端。。。。。。
我是业余小白,望大神提宝贵意见,谢谢~!

下午继续vue

<template><div><!-- 面包屑导航区域 --><el-breadcrumb separator-class="el-icon-arrow-right"><el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item><el-breadcrumb-item>项目管理</el-breadcrumb-item><el-breadcrumb-item>数据检查</el-breadcrumb-item></el-breadcrumb><!-- 卡片视图区域 --><el-card><el-row><el-col :span="8"><el-checkbox-group v-model="checkboxGroup" @change="handleCheckboxGroupChange"><el-checkbox v-for="(value, key) in fields" :label="key" :key="value">{{value}}</el-checkbox></el-checkbox-group></el-col><el-col :span="4"><el-button type="primary" :disabled="(this.checkboxGroup.includes('jd'))?false:true" @click="checkRepeat()">检查重复</el-button></el-col></el-row></el-card><!-- 表格 --><el-table :data="pageRepeatData" height="600" border show-summary style="width: 100%" size="mini"><el-table-column type="selection"></el-table-column><el-table-column fixed prop="id" label="ID号" width="80"></el-table-column><el-table-column fixed prop="xmmc" label="项目名称" width="290"></el-table-column><el-table-column fixed prop="jd" label="井段" width="290"></el-table-column><el-table-column fixed prop="cdm" label="长度/m" width="80"></el-table-column><el-table-column prop="zgks" label="总管孔数" width="180"></el-table-column><el-table-column prop="zgkgl" label="总管孔公里" width="200"></el-table-column><el-table-column prop="gczt" label="工程状态" width="100"></el-table-column></el-table><!-- 分页 --><el-row style="margin-top: 15px;"><el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentpage" :page-sizes="[25, 50, 100, 200]" :page-size="pagesize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination><el-col :span="16" style="text-align: right;"></el-col></el-row></div>
</template><script>
const fieldOptions = { xmmc: '项目名称', jd: '井段', cdm: '长度' }
export default {data () {return {checkboxGroup: ['jd'],fields: fieldOptions,currentUser: [], // 当前用户信息数据集repeatData: [], // 所有的项目信息pageRepeatData: [], // 分页后当前页的项目selectProjects: [], // 选择复选框后,被选择的记录集合// ===== 分页相关的变量 =====total: 0, // 数据的总行数currentpage: 1, // 当前所在的页pagesize: 10 // 每页显示多少行}},created () {methods: {async checkRepeat () {const { data: res } = await this.$http.get('params/', { params: this.checkboxGroup })if (res.code !== 1) {return this.$message.error(res.data.msg)}// 把数据给projectthis.repeatData = res.data// 获取返回记录的总行数this.total = res.data.length// 获取当前页的数据this.getPageInfo()this.$message.success('重复数据获取成功')},handleCheckboxGroupChange (value) {this.checkedValue = value},getPageInfo () {// 清空变量pageProject中的数据this.pageRepeatData = []// 获得当前页的数据for (let i = (this.currentpage - 1) * this.pagesize; i < this.total; i++) {// 遍历数据添加到pageProject中this.pageRepeatData.push(this.repeatData[i])// 判断是否达到一页的要求if (this.pageRepeatData.length === this.pagesize) { break }}},// 分页时修改每页的行数handleSizeChange (size) {// 修改当前页每页数据行数this.pagesize = size// 当前页数据重新加载this.getPageInfo()},// 调整当前的页码handleCurrentChange (pageNumber) {// 修改当前的页码this.currentpage = pageNumber// 当前页数据重新加载this.getPageInfo()}}
}
</script><style lang='less' scoped>
</style>

完工上传正常运行~!

Django ORM 查询重复记录并显示相关推荐

  1. 查询sql一个字段重复的数据mysql_sql查询按两个字段查询重复记录

    展开全部 1.改成如下语句: select shiyan003.* from shiyan003 right join (select xm,sfzhm from shiyan003 group by ...

  2. SQL查询重复记录方法大全 转

    原文发布时间为:2010-08-09 -- 来源于本人的百度文章 [由搬家工具导入] 查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT( ...

  3. sql查询重复记录、删除重复记录方法大全

    查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > ...

  4. MySQL之——查询重复记录、删除重复记录方法大全

    查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) >  ...

  5. sql 查询重复记录2

    ========第一篇========= 在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句: select data_guid from adam_entity_d ...

  6. python django orm查询集总结

    1 .什么是ORM (Object Relational Mapping ) 它的作用是在关系型数据库和业务实体对象做一个映射,我们在操作具体业务对象的时候就可以省去了和SQL语句打交道,只需要简单的 ...

  7. mysql 重复数据 distinct_MySQL中distinct语句去查询重复记录及相关的性能讨论

    在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...

  8. SQL查询重复记录 sql 查重

    假设现有一张人员表(表名:Person),若想将姓名.身份证号.住址这三个字段完全相同的记录查找出来,使用 1: SELECT p1.* 2: FROM persons p1,persons p2 3 ...

  9. SQl语句查询重复数据 只显示其中一条

    SQL查询重复数据,只显示其中一条 有重复数据主要有以下几种情况: 1.存在两条完全相同的纪录 这是最简单的一种情况,用关键字distinct就可以去掉 example: select distinc ...

最新文章

  1. Java自动驾驶:汽车检测
  2. Android studio 签名使用转
  3. C++中#if,#ifdef,ifndef
  4. word邮件合并一页8个_办公软件小课堂||word邮件合并
  5. Ubuntu中启用 ThinkPad指纹识别
  6. 谭浩强课后题之----水仙花数
  7. IM开发基础知识补课(五):通俗易懂,正确理解并用好MQ消息队列
  8. Android之Activity的4种加载模式
  9. 【2】SCN-Ribbon负载均衡
  10. jdk1.8之lambda表达式
  11. java安装后启动程序在哪_java – 有没有办法在安装后使用一些“帮助应用程序”立即启动应用程序?...
  12. JAVA语法基础作业——动手动脑以及课后实验性问题(一)
  13. Spring Boot整合Admin
  14. 药到病除?功能性食品到底有没有用?关键还要看你的肠道微生物
  15. 如何将flac转换成mp3
  16. UI设计师是做什么的?
  17. mysql的主从复制和半同步复制的配置
  18. CTFHub技能树 Web-XSS 详解
  19. LK光流金字塔算法原理及C++实现
  20. Shell第三天-讲义

热门文章

  1. 20171218Capstone培训班
  2. 亲测可用:两个在线的测试数据生成工具
  3. 【刷题记录】【一维数组】魔术师的猜牌术。
  4. Warning: This Python interpreter is in a conda environment, but the environment has not been activat
  5. iOS App 上架App Store及提交审核(Appuploader)
  6. Python之外星人游戏(带源码和图片资源)项目
  7. 微软10月20日反盗版行动的应对方法
  8. 实现私有DNS搭建(正向解析+反向解析+主从同步+安全措施+配置转发服务器+基于ACL实现智能DNS)
  9. 安踏携手华为运动健康共同验证冠军跑鞋 创新引领中国体育
  10. APP图标制作-PS如何倒70圆角