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列表推导式的使用方法
Nov 21 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
python时间日期函数与利用pandas进行时间序列处理详解
Mar 13 Python
python: 判断tuple、list、dict是否为空的方法
Oct 22 Python
python用for循环求和的方法总结
Jul 08 Python
python实现简单井字棋小游戏
Mar 05 Python
基于python爬取有道翻译过程图解
Mar 31 Python
Pytorch转tflite方式
May 25 Python
python线程里哪种模块比较适合
Aug 02 Python
python实现经典排序算法的示例代码
Feb 07 Python
pandas按条件筛选数据的实现
Feb 20 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获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
php表单敏感字符过滤类
2014/12/08 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
在textarea文本域中显示HTML代码的方法
2007/03/06 Javascript
Jquery 高亮显示文本中重要的关键字
2009/12/24 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
基于node.js的快速开发透明代理
2010/12/25 Javascript
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
jQuery on方法传递参数示例
2014/12/09 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
2017/01/21 Javascript
深入学习 JavaScript中的函数调用
2017/03/23 Javascript
Textarea输入字数限制实例(兼容iOS&安卓)
2017/07/06 Javascript
Express + Session 实现登录验证功能
2017/09/08 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
老生常谈Python序列化和反序列化
2017/06/28 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
在Pycharm中对代码进行注释和缩进的方法详解
2019/01/20 Python
在python里从协程返回一个值的示例
2019/02/19 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
Python实现Wordcloud生成词云图的示例
2020/03/30 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
python代码实现备忘录案例讲解
2021/07/26 Python
Spring Boot接口定义和全局异常统一处理
2022/04/20 Java/Android