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系列之教你如何根据图片生成字符画
May 23 Python
python获得一个月有多少天的方法
Jun 04 Python
python设计模式大全
Jun 27 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
详解Python之unittest单元测试代码
Jan 24 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
Python学习笔记之字符串和字符串方法实例详解
Aug 22 Python
opencv python如何实现图像二值化
Feb 03 Python
python爬虫开发之urllib模块详细使用方法与实例全解
Mar 09 Python
Python logging模块写入中文出现乱码
May 21 Python
python缺失值的解决方法总结
Jun 09 Python
Python如何识别银行卡卡号?
Jun 10 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
允许phpmyadmin空密码登录的配置方法
2011/05/29 PHP
MySQL连接数超过限制的解决方法
2011/07/17 PHP
php命名空间学习详解
2014/02/27 PHP
PHP实现微信对账单处理
2018/10/01 PHP
修改Laravel自带的认证系统的User类的命名空间的步骤
2019/10/15 PHP
如何利用PHP实现上传图片功能详解
2020/09/24 PHP
jQuery 方法大全方便学习参考
2010/02/25 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
Javascript基础教程之if条件语句
2015/01/18 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
自己编写的支持Ajax验证的JS表单验证插件
2015/05/15 Javascript
jquery图片倾斜层叠切换特效代码分享
2015/08/27 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
JS原型prototype和__proto__用法实例分析
2020/03/14 Javascript
js实现小时钟效果
2020/03/25 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
[39:32]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第二场
2014/05/23 DOTA
[03:15]2014DOTA2国际邀请赛 专访国士无双信心满满
2014/07/12 DOTA
Python入门学习之字符串与比较运算符
2015/10/12 Python
Python 函数返回值的示例代码
2019/03/11 Python
简单了解python中的与或非运算
2019/09/18 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
为智能设备设计个性化保护套网站:caseable
2017/01/05 全球购物
设计毕业生简历中的自我评价
2013/10/01 职场文书
公司端午节活动方案
2014/02/04 职场文书
初一新生军训方案
2014/05/22 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
车间主任岗位职责
2015/02/03 职场文书
单方投资意向书
2015/05/11 职场文书
会议室管理制度范本
2015/08/06 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书