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中模块的__all__属性详解
Oct 26 Python
11月编程语言排行榜 Python逆袭C#上升到第4
Nov 15 Python
Python实现针对给定字符串寻找最长非重复子串的方法
Apr 21 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
Python多继承顺序实例分析
May 26 Python
Python中的Numpy矩阵操作
Aug 12 Python
pygame游戏之旅 添加游戏界面按键图形
Nov 20 Python
python join方法使用详解
Jul 30 Python
iPython pylab模式启动方式
Apr 24 Python
python是怎么被发明的
Jun 15 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
使用pandas实现筛选出指定列值所对应的行
Dec 13 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
3
2006/10/09 PHP
discuz程序的PHP加密函数原理分析
2011/08/05 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
PHP实现的文件上传类与用法详解
2017/07/05 PHP
JQuery Tips(4) 一些关于提高JQuery性能的Tips
2009/12/19 Javascript
javascript与CSS复习(二)
2010/06/29 Javascript
Jquery选择子控件"大于号"和" "区别介绍及使用示例
2013/06/25 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
JavaScript的Date()方法使用详解
2015/06/09 Javascript
jQuery实现获取table表格第一列值的方法
2016/03/01 Javascript
解析ajaxFileUpload 异步上传文件简单使用
2016/12/30 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
详解Angular6 热加载配置方案
2018/08/18 Javascript
Vue 进阶之路(三)
2019/04/18 Javascript
el-table树形表格表单验证(列表生成序号)
2020/05/31 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
pytorch打印网络结构的实例
2019/08/19 Python
Python的Lambda函数用法详解
2019/09/03 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
女大学生个人求职信
2013/12/09 职场文书
库房主管岗位职责
2013/12/31 职场文书
高二化学教学反思
2014/01/30 职场文书
多媒体专业自我鉴定
2014/02/28 职场文书
护士毕业实习感言
2014/03/05 职场文书
平安家庭示范户事迹
2014/06/02 职场文书
授权委托书格式
2014/07/31 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
使用pycharm运行flask应用程序的详细教程
2021/06/07 Python