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使用reportlab实现图片转换成pdf的方法
May 22 Python
运动检测ViBe算法python实现代码
Jan 09 Python
Python zip()函数用法实例分析
Mar 17 Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 Python
Django中日期处理注意事项与自定义时间格式转换详解
Aug 06 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
django 数据库连接模块解析及简单长连接改造方法
Aug 29 Python
Python3 利用face_recognition实现人脸识别的方法
Mar 13 Python
Python-jenkins模块之folder相关操作介绍
May 12 Python
Python enumerate() 函数如何实现索引功能
Jun 29 Python
基于Python正确读取资源文件
Sep 14 Python
golang特有程序结构入门教程
Jun 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个人网站架设连环讲(一)
2006/10/09 PHP
Apache2 httpd.conf 中文版
2006/11/17 PHP
js DOM模型操作
2009/12/28 Javascript
基于jquery的分页控件(C#)
2011/01/06 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
Express的路由详解
2015/12/10 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
实例分析js事件循环机制
2017/12/13 Javascript
vue实现多个元素或多个组件之间动画效果
2018/09/25 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
JavaScript实现PC端横向轮播图
2020/02/07 Javascript
如何在vue 中使用柱状图 并自修改配置
2021/01/21 Vue.js
在Python中进行自动化单元测试的教程
2015/04/15 Python
Python的Django框架中的数据过滤功能
2015/07/17 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
python实现音乐下载的统计
2018/06/20 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
Python 合并多个TXT文件并统计词频的实现
2019/08/23 Python
Python图片的横坐标汉字实例
2019/12/04 Python
python发qq消息轰炸虐狗好友思路详解(完整代码)
2020/02/15 Python
个人租房协议书
2014/04/09 职场文书
2014年图书馆工作总结
2014/11/25 职场文书
商场收银员岗位职责
2015/04/07 职场文书
音乐课外活动总结
2015/05/09 职场文书
《合作意向书》怎么写?
2019/08/20 职场文书
励志正能量20句:送给所有为梦想拼搏的人
2019/11/11 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL
Python实现天气查询软件
2021/06/07 Python
zabbix 代理服务器的部署与 zabbix-snmp 监控问题
2022/07/15 Servers