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);
相关推荐
小宁爱Python15 小时前
从零搭建 RAG 智能问答系统 6:Text2SQL 与工作流实现数据库查询
数据库·人工智能·python·django
言德斐1 天前
Python Web框架深度对比:Django vs Flask vs FastAPI(含优缺点与选型策略)
前端·python·django
belldeep1 天前
python:怎样用 Django 开发电子商务程序
django·电子商务·1024程序员节
清静诗意2 天前
【Django FilterSet 深入解析】类属性过滤器与 Meta.fields 的关系详解(附源码分析)
django·filter
大叔_爱编程2 天前
基于随机森林算法的Boss直聘数据分析及可视化-hadoop+django+spider
hadoop·django·1024程序员节·spider·随机森林算法·boss直聘
白小筠2 天前
创建Django项目
数据库·django·sqlite
计算机毕业设计小帅2 天前
【2026计算机毕业设计】基于Django的社区婴幼儿预防接种系统
数据库·django·课程设计
麦麦大数据3 天前
D027 v2 vue+django+neo4j 基于知识图谱红楼梦问答系统 (新增问关系功能;新增知识节点和关系管理功能,neo4j增删改查功能)
vue.js·django·问答系统·知识图谱·neo4j·图谱管理·neo4j增删改查
不爱搬砖的码农4 天前
宝塔面板部署Django:使用Unix Socket套接字通信的完整教程(附核心配置与问题排查)
python·django·unix
码界奇点4 天前
Django视图从基础到高级的全面解析
数据库·django·sqlite·web·python3.11