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处理数据,存进hive表的方法
Jul 04 Python
python中文编码与json中文输出问题详解
Aug 24 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
使用Python创建简单的HTTP服务器的方法步骤
Apr 26 Python
python中的句柄操作的方法示例
Jun 20 Python
Python 取numpy数组的某几行某几列方法
Oct 24 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
在python中修改.properties文件的操作
Apr 08 Python
python如何进行矩阵运算
Jun 05 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
Python预测分词的实现
Jun 18 Python
python随机打印成绩排名表
Jun 23 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
解析如何用php screw加密php源代码
2013/06/20 PHP
thinkphp使用literal防止模板标签被解析的方法
2014/11/22 PHP
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
标题过长使用javascript按字节截取字符串
2014/04/24 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
详解JavaScript自定义函数
2020/07/29 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
[39:08]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第一场 12.12
2020/12/16 DOTA
python list中append()与extend()用法分享
2013/03/24 Python
Python设计模式之单例模式实例
2014/04/26 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
python os模块简单应用示例
2019/05/23 Python
如何使用Python实现自动化水军评论
2019/06/26 Python
Python帮你微信头像任意添加装饰别再@微信官方了
2019/09/25 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
Keras实现DenseNet结构操作
2020/07/06 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
目标管理责任书
2014/04/15 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers