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的urllib库提交WEB表单
Feb 24 Python
pycharm 使用心得(八)如何调用另一文件中的函数
Jun 06 Python
python实现删除文件与目录的方法
Nov 10 Python
python写入xml文件的方法
May 08 Python
全面了解Python环境配置及项目建立
Jun 30 Python
python中的随机函数小结
Jan 27 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
TensorFlow实现Logistic回归
Sep 07 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
May 26 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
Python自动化测试基础必备知识点总结
Feb 07 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
详解js异步文件加载器
2016/01/24 PHP
基于jquery的仿百度的鼠标移入图片抖动效果
2010/09/17 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
JavaScript如何禁止Backspace键
2015/12/02 Javascript
Bootstrap入门书籍之(四)菜单、按钮及导航
2016/02/17 Javascript
浅谈JS继承_借用构造函数 & 组合式继承
2016/08/16 Javascript
js实现五星评价功能
2017/03/08 Javascript
Angular.Js之Scope作用域的学习教程
2017/04/27 Javascript
jquery.rotate.js实现可选抽奖次数和中奖内容的转盘抽奖代码
2017/08/23 jQuery
解决Vue @submit 提交后不刷新页面问题
2020/07/18 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
[01:01:51]EG vs VG Supermajor小组赛B组 BO3 第二场 6.2
2018/06/03 DOTA
详解Python中的日志模块logging
2015/06/19 Python
Python内置函数OCT详解
2016/11/09 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
2018/05/15 Python
Python一句代码实现找出所有水仙花数的方法
2018/11/13 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
python数据爬下来保存的位置
2020/02/17 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
墨西哥网上超市:Superama
2018/07/10 全球购物
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
Java如何支持I18N?
2016/10/31 面试题
小学教师事迹材料
2014/01/13 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
英语通知范文
2015/04/22 职场文书
大学迎新生的欢迎词
2019/06/25 职场文书
导游词之介休绵山
2019/12/31 职场文书