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);
相关推荐
JavaWeb学起来7 小时前
Django学习教程(一)Django介绍和环境准备
django·python web·web框架·django教程
IT策士8 小时前
Django 从 0 到 1 打造完整电商平台:使用 Celery 异步发送邮件/短信
后端·python·django
IT策士9 小时前
Django 从 0 到 1 打造完整电商平台:商品缓存优化(Redis)
redis·缓存·django
IT策士15 小时前
Django 从 0 到 1 打造完整电商平台:Nginx + uWSGI 部署 Django 项目
nginx·django·sqlite
Dxy123931021615 小时前
Django如何获取请求IP?从踩坑到最佳实践
tcp/ip·django·sqlite
IT策士1 天前
Django 从 0 到 1 打造完整电商平台:我的订单列表与订单详情
后端·python·django
码界筑梦坊2 天前
147-基于Python的IT行业招聘数据可视化分析系统
开发语言·python·信息可视化·数据分析·django·毕业设计
IT策士2 天前
Django 从 0 到 1 打造完整电商平台:购物车页面增删改查商品数量
后端·python·django
大叔_爱编程2 天前
基于职业能力的知识图谱的学习路径推荐系统_django
django·毕业设计·源码·知识图谱·课程设计
IT策士2 天前
Django 从 0 到 1 打造完整电商平台:商品排序与浏览量统计
后端·python·django