Django 中设置联合约束和联合索引

文本 复制代码
在Django 中对一张表的几个字段进行联合约束和联合索引,例如电商项目购物车的时候,登录的用户和商品两个字段在一起表示唯一记录。

联合约束参见unique-together官方文档。

举个联合约束和联合索引例子:

python 复制代码
class ShoppingCart(models.Model):
    """
    购物车
    """
    user = models.ForeignKey(User, verbose_name=u"用户", on_delete=models.CASCADE)
    goods = models.ForeignKey(Goods, verbose_name=u"商品", on_delete=models.CASCADE)
    nums = models.IntegerField(default=0, verbose_name="购买数量")

    add_time = models.DateTimeField(default=datetime.now, verbose_name=u"添加时间")

    class Meta:
        verbose_name = '购物车'
        verbose_name_plural = verbose_name
        # 数据库的联合约束,用户和商品唯一,不可重复
        unique_together = ("user", "goods")
        # 联合索引
        index_together = ["user", "goods"]

最终底层转化为sql语句,如下:

sql 复制代码
CREATE UNIQUE INDEX index_name ON trade_shoppingcart(user, goods);
相关推荐
2601_962283884 小时前
Django数据库配置(一)
mysql·postgresql·django·sqlite·数据库配置
qq_22589174662 天前
基于Python+Django的LangGraph智能旅游规划系统
python·django·旅游
小刘在重生~2 天前
Django|Excel 批量上传、Form/ModelForm 文件上传、Media 媒体文件配置
python·django·excel
小刘在重生~2 天前
Django|Ajax 入门、JSON 返回、ECharts 图表、文件上传完整笔记
ajax·django·json
2601_962283882 天前
Python 开发框架:Django、Flask和FastAPI
python·django·flask·fastapi·web开发
小刘在重生~3 天前
Django 全套入门笔记|安装、项目创建、ORM、Form、中间件、登录认证
笔记·中间件·django
大模型丫丫5 天前
工业级 RAG 为什么需要 Elasticsearch?
elasticsearch·django·jenkins
Mr数据杨5 天前
【Codex】接入音频转录服务实现课堂语音结构化处理
django·音视频·codex·项目开发
Mr数据杨7 天前
【Codex】用学生考试初始化模块批量准备考试基础数据
django·codex·项目开发
典典分享指南7 天前
Excel SUMIFS 跨表汇总实战:多表条件求和的完整指南
django·flask·numpy·pyqt·fastapi