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中文分词实现方法(安装pymmseg)
Jun 14 Python
使用python爬虫实现网络股票信息爬取的demo
Jan 05 Python
Python的UTC时间转换讲解
Feb 26 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
python使用pymongo操作mongo的完整步骤
Apr 13 Python
Python3.5文件修改操作实例分析
May 01 Python
flask应用部署到服务器的方法
Jul 12 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
Nov 01 Python
Pycharm 2020最新永久激活码(附最新激活码和插件)
Sep 17 Python
从多个tfrecord文件中无限读取文件的例子
Feb 17 Python
python给list排序的简单方法
Dec 10 Python
详解appium自动化测试工具(monitor、uiautomatorviewer)
Jan 27 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
农民和部队如何穿矿
2020/03/04 星际争霸
PHP模拟http请求的方法详解
2016/11/09 PHP
PHP实现对数字分隔加千分号的方法
2019/03/18 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
Javascript倒计时代码
2010/08/12 Javascript
js图片延迟加载的实现方法及思路
2013/07/22 Javascript
JavaScript中的逻辑判断符&&、||与!介绍
2014/12/31 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
JavaScript自定义数组排序方法
2015/02/12 Javascript
JQuery记住用户名密码实现下次自动登录功能
2015/04/27 Javascript
jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
2016/04/18 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
javascript实现动态显示颜色块的报表效果
2017/04/10 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
过滤器vue.filters的使用方法实现
2019/09/18 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
Django中URL视图函数的一些高级概念介绍
2015/07/20 Python
Python中字符串的格式化方法小结
2016/05/03 Python
Python实现句子翻译功能
2017/11/14 Python
Python实现调度算法代码详解
2017/12/01 Python
pytorch构建网络模型的4种方法
2018/04/13 Python
python list转矩阵的实例讲解
2018/08/04 Python
Django Rest framework认证组件详细用法
2019/07/25 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
python实现简单文件读写函数
2021/02/25 Python
大专计算机个人求职的自我评价
2013/10/21 职场文书
七年级英语教学反思
2014/01/15 职场文书
超越自我演讲稿
2014/05/21 职场文书
村党组织公开承诺书
2015/04/30 职场文书
少年的你:世界上没有如果,要在第一次就勇敢的反抗
2019/11/20 职场文书
Python中使用Lambda函数的5种用法
2021/04/01 Python
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
Python Django模型详解
2021/10/05 Python