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操作SQLite简明教程
Jul 10 Python
Python3读取文件常用方法实例分析
May 22 Python
TensorFlow实现AutoEncoder自编码器
Mar 09 Python
python实现类之间的方法互相调用
Apr 29 Python
python图像处理入门(一)
Apr 04 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 Python
python字符串的拼接方法总结
Nov 18 Python
python3实现绘制二维点图
Dec 04 Python
Pycharm生成可执行文件.exe的实现方法
Jun 02 Python
Python 合并拼接字符串的方法
Jul 28 Python
python数据分析之单因素分析线性拟合及地理编码
Jun 25 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函数代码
2013/08/29 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
php实现QQ小程序发送模板消息功能
2019/09/18 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
JS三级可折叠菜单实现方法
2016/02/29 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
2019/08/06 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
JS数组属性去重并校验重复数据
2020/01/10 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
python正则中最短匹配实现代码
2018/01/16 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
基于python2.7实现图形密码生成器的实例代码
2019/11/05 Python
Pandas之read_csv()读取文件跳过报错行的解决
2020/04/21 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
8种常用的Python工具
2020/08/05 Python
Manduka官网:瑜伽垫、瑜伽毛巾和服装
2018/07/02 全球购物
Java里面有没有全局变量?为什么?
2015/02/06 面试题
经贸日语专业个人求职信范文
2014/04/29 职场文书
机械操作工岗位职责
2014/08/08 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
2014年仓库管理工作总结
2014/12/17 职场文书
入党自传范文2015
2015/06/26 职场文书
Nginx 502 Bad Gateway错误原因及解决方案
2021/03/31 Servers