电商购物系统商品数据结构设置 -- 商品类别表

简介: 电商购物系统商品数据结构设置 -- 商品类别表

商品分类

该项目是一个连续完整的项目 , 如果看不懂可以去看看专栏中先前的博文

如上图对商品的一个分类实际上和省市区的分类十分类似 , 都是通过自关联的方法来实现 , 但是这里不同的是 , 涉及到外键来获取数据

首先让我们来看一下最后通过后端返回数据的形式是什么样子的

"""
        {
            1:{
                channels:[
                    {id:1 , name:手机 , url:},
                    {}
                    {}
                ],
                sub_cats:[
                    {id:500
                    name:手机通讯,
                    sub_cat:[
                        {id:520 , name:华为},
                        {},……
                    ]},
                    {}……
                ]
            },
            2:{},
            3:{},
            ……
            }
        """

也就是说我们需要设置一个大的字典 , 其中第一个键也就是上述的1 , 2 , 3… 这是所有类别的数目 , 也就是下图所展示的部分 , 如id为1所对应的数据保存在channels中的name元素也就是手机相册数码

**

**

在我们打开第一个后会展示如下图的页面其中红色框出的就是第二类元素我们将其放在sub_cats这个列表中

现在的逻辑就很清楚了 , 在这之后我们再嵌套一个列表用来保存第二类数据的子类数据

介绍完之后我们要进行第二步进行实操了

  1. 首先我们要通过channels = GoodsChannel.objects.all()获得商品分组频道的所有数据 , 然后进行循环 , 因为我们使用的是一个自关联的方法所以在拿到第一级数据的时候它的id会重复 – 第一级数据中会包含很多子数据如手机 , 相册 , 数码 , 他们的分组id设置的是相同的
categories = {}
        # 查询商品分组频道的所有数据
        channels = GoodsChannel.objects.all()
        for channel in channels:
                    group_id = channel.group_id
                    if group_id not in categories:
                        categories[group_id] = {'channels': [], 'sub_cats': []}
  1. 在设置好第一级模版之后 , 我们再添加channels中的数据
# 获得 第一级 主键的数据 , 通过第一级主键获得该类目下的分类
            category = channel.category
            categories[group_id]['channels'].append(
                {
                    'id' : category.id,
                    'name' : category.name,
                    'url' : channel.url
                }
            )
  1. 在获取第二级第三级数据和之前有一点不相同
group = models.ForeignKey(GoodsChannelGroup, verbose_name='频道组名', on_delete=models.CASCADE)
    category = models.ForeignKey(GoodsCategory, on_delete=models.CASCADE, verbose_name='顶级商品类别')
    url = models.CharField(max_length=50, verbose_name='频道页面链接')
    sequence = models.IntegerField(verbose_name='组内顺序')
  1. 在商品频道组数据库设置的过程中我们是绑定了两个外键字段category,group
    category是一个自关联的表格 , 通过这个表格我们可以获取到所有的数据
# subs通过父类别访问子类别 category 该表格设置的是一个自关联的方法 , 通过父类id获得获得表内子类数据
            category1 = category.subs.all()
            for re_category in category1:
                sub_cat = []
                categories[group_id]['sub_cats'].append(
                    {
                        'id': re_category.id,
                        'name': re_category.name,
                        'sub_cat' : sub_cat
                    }
                )
                category2 = re_category.subs.all()
                for sub_category in category2:
                    sub_cat.append(
                        {
                            'id': sub_category.id,
                            'name': sub_category.name,
                        }
                    )
        context = {'categories':categories}


相关文章
|
12天前
|
Python
电商购物系统商品数据结构设置
电商购物系统商品数据结构设置
|
7月前
|
自然语言处理 算法 测试技术
【数据结构原理】系统生命周期 | 算法规范 | 笔记
【数据结构原理】系统生命周期 | 算法规范 | 笔记
52 0
|
12天前
|
算法 搜索推荐
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
11 0
|
12天前
|
缓存 NoSQL 关系型数据库
Redis第二课,1.set key value(设置对应的key和value)2.get key(得到value值)Redis全局命令(支持很多的数据结构)3.keys(用来查询当前
Redis第二课,1.set key value(设置对应的key和value)2.get key(得到value值)Redis全局命令(支持很多的数据结构)3.keys(用来查询当前
|
1月前
|
算法
【数据结构与算法 11,高并发系统基础篇
【数据结构与算法 11,高并发系统基础篇
|
1月前
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库产品使用合集之在ADB中,如何将源数据的多表(数据结构一致)汇总到一张表
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
1月前
|
存储 机器学习/深度学习 供应链
数据结构课程设计 仓储管理系统
数据结构课程设计 仓储管理系统
19 0
|
1月前
|
存储 算法 索引
【数据结构入门精讲 | 第四篇】考研408、企业面试表专项习题
【数据结构入门精讲 | 第四篇】考研408、企业面试表专项习题
62 0
|
1月前
|
存储
【数据结构入门精讲 | 第三篇】一文讲清表
【数据结构入门精讲 | 第三篇】一文讲清表
30 0
|
1月前
|
算法 定位技术 C++
数据结构实训(大作业)c++模拟北斗卫星导航系统简单的迪杰斯特拉算法
数据结构实训(大作业)c++模拟北斗卫星导航系统简单的迪杰斯特拉算法
33 0

热门文章

最新文章