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监控网站运行异常并发送邮件的方法
Mar 13 Python
Django Admin实现上传图片校验功能
Mar 06 Python
Python while 循环使用的简单实例
Jun 08 Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 Python
Python深拷贝与浅拷贝用法实例分析
May 05 Python
Python利用sqlacodegen自动生成ORM实体类示例
Jun 04 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
python游戏开发的五个案例分享
Mar 09 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
Jun 10 Python
python把一个字符串切开的实例方法
Sep 27 Python
python 如何引入协程和原理分析
Nov 30 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 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
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
Mysql的常用命令
2006/10/09 PHP
做了CDN获取用户真实IP的函数代码(PHP与Asp设置方式)
2013/04/13 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP如何防止用户重复提交表单
2020/12/09 PHP
js 调用父窗口的具体实现代码
2013/07/15 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
详解jQuery选择器
2016/12/21 Javascript
微信小程序 下拉菜单的实现
2017/04/06 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
vue $set 给数据赋值的实例
2019/11/09 Javascript
微信小程序返回上一页传参并刷新过程解析
2019/12/13 Javascript
微信小程序实现抖音播放效果的实例代码
2020/04/11 Javascript
Python Mysql自动备份脚本
2008/07/14 Python
Python中的闭包实例详解
2014/08/29 Python
Golang与python线程详解及简单实例
2017/04/27 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
基于selenium及python实现下拉选项定位select
2020/07/22 Python
python通过函数名调用函数的几种场景
2020/09/23 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
编辑硕士自荐信范文
2013/11/27 职场文书
电子商务自荐书范文
2014/01/04 职场文书
中国入世承诺
2014/04/01 职场文书
扬尘污染防治方案
2014/06/15 职场文书
关于五一放假的通知
2015/08/18 职场文书
员工担保书范本
2015/09/22 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
OpenFeign实现远程调用
2022/08/14 Java/Android