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正则表达式re模块详细介绍
May 29 Python
Python编程实现双击更新所有已安装python模块的方法
Jun 05 Python
Python使用剪切板的方法
Jun 06 Python
利用python实现xml与数据库读取转换的方法
Jun 17 Python
python list删除元素时要注意的坑点分享
Apr 18 Python
python常用函数与用法示例
Jul 02 Python
Python 分享10个PyCharm技巧
Jul 13 Python
在django模板中实现超链接配置
Aug 21 Python
opencv python Canny边缘提取实现过程解析
Feb 03 Python
pycharm中import呈现灰色原因的解决方法
Mar 04 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
Python加密与解密模块hashlib与hmac
Jun 05 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
web方式ftp
2006/10/09 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
jquery 插件之仿“卓越亚马逊”首页弹出菜单效果
2008/12/25 Javascript
JavaScript 动态改变图片大小
2009/06/11 Javascript
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
浅谈JavaScript实现面向对象中的类
2014/12/09 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
微信小程序开发之tabbar图标和颜色的实现
2018/10/17 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
JQuery插件tablesorter表格排序实现过程解析
2020/05/28 jQuery
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
Python利用IPython提高开发效率
2016/08/10 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
2017/05/24 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
Pytorch to(device)用法
2020/01/08 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
美国电视购物:QVC
2017/02/06 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
武汉世纪畅想数字传播有限公司 .NET笔试题
2015/06/13 面试题
麦当劳辞职信范文
2014/01/18 职场文书
社区健康教育实施方案
2014/03/18 职场文书
小学社团活动总结
2014/06/27 职场文书
2014年商场工作总结
2014/11/22 职场文书
先进学校事迹材料
2014/12/30 职场文书
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python
mysql拆分字符串作为查询条件的示例代码
2022/07/07 MySQL