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中最常用的操作列表的几种方法归纳
Apr 24 Python
Python获取任意xml节点值的方法
May 05 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
Python 删除连续出现的指定字符的实例
Jun 29 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
Python实现的读取/更改/写入xml文件操作示例
Aug 30 Python
python3中os.path模块下常用的用法总结【推荐】
Sep 16 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
python 内置函数汇总详解
Sep 16 Python
Python2与Python3的区别点整理
Dec 12 Python
深入浅析python变量加逗号,的含义
Feb 22 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 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 set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
浅析PHP原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
2014/04/19 PHP
PHP整数取余返回负数的相关解决方法
2014/05/15 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
php中smarty变量修饰用法实例分析
2015/06/11 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
2016/04/07 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
如何理解Vue的v-model指令的使用方法
2018/07/19 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
python 打印对象的所有属性值的方法
2016/09/11 Python
在pycharm下设置自己的个性模版方法
2019/07/15 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
Python基础之变量基本用法与进阶详解
2020/01/03 Python
python字典和json.dumps()的遇到的坑分析
2020/03/11 Python
Python气泡提示与标签的实现
2020/04/01 Python
keras多显卡训练方式
2020/06/10 Python
Python脚本打包成可执行文件过程解析
2020/10/20 Python
英国人最爱的饰品网站:Accessorize
2016/08/22 全球购物
自荐信模版
2013/10/24 职场文书
行政文员岗位职责
2013/11/08 职场文书
销售工作岗位职责
2013/12/24 职场文书
自我鉴定怎么写
2014/01/12 职场文书
九年级语文教学反思
2014/02/04 职场文书
甜品店创业计划书
2014/08/14 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
SQL Server使用导出向导功能
2022/04/08 SQL Server
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB