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读写Json涉及到中文的处理方法
Sep 12 Python
详解Python中的静态方法与类成员方法
Feb 28 Python
python中import reload __import__的区别详解
Oct 16 Python
python函数式编程学习之yield表达式形式详解
Mar 25 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
Aug 23 Python
解决Keras中CNN输入维度报错问题
Jun 29 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
python+flask编写一个简单的登录接口
Nov 13 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 16 Python
Python进程池与进程锁之语法学习
Apr 11 Python
Python3使用Qt5来实现简易的五子棋小游戏
May 02 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部分常见问题总结
2008/03/27 PHP
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
PHP file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
node.js中的http.response.removeHeader方法使用说明
2014/12/14 Javascript
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
2015/10/14 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
AngularJs  Understanding Angular Templates
2016/09/02 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
详解webpack模块化管理和打包工具
2018/04/21 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python:Scrapy框架中Item Pipeline组件使用详解
2017/12/27 Python
TensorFlow saver指定变量的存取
2018/03/10 Python
详解pycharm连接不上mysql数据库的解决办法
2020/01/10 Python
详解pandas获取Dataframe元素值的几种方法
2020/06/14 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
浅析python函数式编程
2020/09/26 Python
6种非常炫酷的CSS3按钮边框动画特效
2016/03/16 HTML / CSS
CSS3弹性盒模型开发笔记(二)
2016/04/26 HTML / CSS
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
师范应届毕业生自荐信
2013/11/18 职场文书
校园文明倡议书
2014/05/16 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
廉洁自律个人总结
2015/02/14 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
python开发人人对战的五子棋小游戏
2022/05/02 Python
pycharm无法安装cv2模块问题
2022/05/20 Python