Django model 中设置联合约束和联合索引的方法


Posted in Python onAugust 06, 2019

在Django model中对一张表的几个字段进行联合约束和联合索引,例如在购物车表中,登录的用户和商品两个字段在一起表示唯一记录。

举个栗子:

Django model中购物车表

class Cart(models.Model):
  user = models.ForeignKey(
    MyUser,
    verbose_name="用户"
  )
  goods = models.ForeignKey(
    Goods,
    verbose_name="商品"
  )
  num = models.IntegerField(
    verbose_name="商品数量"
  )
  is_select = models.BooleanField(
    default=True,
    verbose_name="选中状态"
  )
 
  class Meta:
    # 联合约束  其中goods和user不能重复
    unique_together = ["goods", "user"]
    # 联合索引
    index_together = ["user", "goods"]

unique_together = ["goods", "user"] 表示联合约束,其中"goods"和"user"表示不能重复,不能一样。

index_together = ["user", "goods"] 表示联合索引,其中"goods"和"user"联合同步查询,提高效率。

联合索引的优势

示例SQL:select * from person where a=100 and b=100 and c=1000;

​假设你的数据有一千万条 每次条件过滤 省10%的数据

1 如果三个单索引 先拿a的索引找 剩下100万数据 然后拿b条件找 剩十万 再c条件找 最后得到一万数据

2 如果是联合索引 他 一千万数据*10% * 10% * 10% 直接得到一万条数据

建立联合索引的同时 还会给他们之间的组合建立索引

以上这篇Django model 中设置联合约束和联合索引的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python的Flask框架中的signals信号机制
Jun 13 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
Python引用类型和值类型的区别与使用解析
Oct 17 Python
Django原生sql也能使用Paginator分页的示例代码
Nov 15 Python
基于python实现名片管理系统
Nov 30 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
Apr 01 Python
Python 实现Numpy中找出array中最大值所对应的行和列
Nov 26 Python
Pytorch中.new()的作用详解
Feb 18 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
在jupyter notebook 添加 conda 环境的操作详解
Apr 10 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
Pandas自定义选项option设置
Jul 25 Python
对django 模型 unique together的示例讲解
Aug 06 #Python
python django model联合主键的例子
Aug 06 #Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 #Python
详解python中的index函数用法
Aug 06 #Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
Aug 06 #Python
对Django url的几种使用方式详解
Aug 06 #Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 #Python
You might like
如何做到多笔资料的同步
2006/10/09 PHP
php自定义apk安装包实例
2014/10/20 PHP
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
javascript xml为数据源的下拉框控件
2009/07/07 Javascript
jquery validate使用攻略 第四步
2010/07/01 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
前端开发的开始---基于面向对象的Ajax类
2010/09/17 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
简介JavaScript中toUpperCase()方法的使用
2015/06/06 Javascript
JavaScript中使用Math.PI圆周率属性的方法
2015/06/14 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
通过JQuery,JQueryUI和Jsplumb实现拖拽模块
2019/06/18 jQuery
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
微信小程序-API接口安全详解
2019/07/16 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
深入浅析Python字符编码
2015/11/12 Python
Python基于模块Paramiko实现SSHv2协议
2020/04/28 Python
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
remote接口和home接口主要作用
2013/05/15 面试题
火锅店的活动方案
2014/08/15 职场文书
党的群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
2014年语文教师工作总结
2014/12/18 职场文书
发布会邀请函
2015/01/31 职场文书
2015年共青团工作总结
2015/05/15 职场文书
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript