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

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

商品分类

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

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

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

"""
        {
            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}


相关文章
|
7月前
|
Python
电商购物系统商品数据结构设置
电商购物系统商品数据结构设置
|
13天前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
105 66
|
2月前
|
传感器 算法
数据结构之环境监测系统(深度优先搜索)
环境监测系统采用深度优先搜索(DFS)算法,实现实时监测和分析环境参数,如温度、湿度等。系统通过构建传感器网络图结构,利用DFS遍历网络,检测异常数据。当温度超过预设阈值时,系统将发出警告。此系统适用于工业生产、室内空调控制、农业温室管理等多种场景,提供高效的环境监测解决方案。
53 12
|
2月前
|
算法
数据结构之购物车系统(链表和栈)
本文介绍了基于链表和栈的购物车系统的设计与实现。该系统通过命令行界面提供商品管理、购物车查看、结算等功能,支持用户便捷地管理购物清单。核心代码定义了商品、购物车商品节点和购物车的数据结构,并实现了添加、删除商品、查看购物车内容及结算等操作。算法分析显示,系统在处理小规模购物车时表现良好,但在大规模购物车操作下可能存在性能瓶颈。
57 0
|
6月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
210 1
|
7月前
|
算法
$停车场管理系统 栈与队列
$停车场管理系统 栈与队列
|
7月前
|
算法 搜索推荐
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
数据结构和算法——表排序(算法概述、物理排序、复杂度分析,包含详细清晰图示过程)
61 0
|
7月前
|
缓存 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(用来查询当前
|
8月前
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库产品使用合集之在ADB中,如何将源数据的多表(数据结构一致)汇总到一张表
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
8月前
|
算法
【数据结构与算法 11,高并发系统基础篇
【数据结构与算法 11,高并发系统基础篇
下一篇
开通oss服务