电商项目商品表关系广告类别表

简介: 电商项目商品表关系广告类别表

广告类别表ContentCategory(tb_content_category)与 Content(tb_content)

tb_content_category该表作为一个外键链接对象用来链接tb_content , 获得轮播图, 快讯等主页广告类别

class ContentCategory(BaseModel):
    """广告内容类别"""
    name = models.CharField(max_length=50, verbose_name='名称')
    key = models.CharField(max_length=50, verbose_name='类别键名')
    class Meta:
        db_table = 'tb_content_category'
        verbose_name = '广告内容类别'
        verbose_name_plural = verbose_name
    def __str__(self):
        return self.name

ContentCategory(tb_content_category)

Content(tb_content)

可以观察到两张表实际上是通过category_id这个键进行关联的 , 也就是说这两张表实际上实现的功能也就是下图中主页的所有数据

所以在写入的过程中 , 首先是要通过主表获取所的分类 , 然后在通过主表的ID , 因为外键对象关联的ID等于主表的ID , 通过这个来获取到数据

class GoodsCategory(BaseModel):
    """商品类别"""
    name = models.CharField(max_length=10, verbose_name='名称')
    parent = models.ForeignKey('self', related_name='subs', null=True, blank=True, on_delete=models.CASCADE, verbose_name='父类别')
    class Meta:
        db_table = 'tb_goods_category'
        verbose_name = '商品类别'
        verbose_name_plural = verbose_name
    def __str__(self):
        return self.name
class GoodsChannelGroup(BaseModel):
    """商品频道组"""
    name = models.CharField(max_length=20, verbose_name='频道组名')
    class Meta:
        db_table = 'tb_channel_group'
        verbose_name = '商品频道组'
        verbose_name_plural = verbose_name
    def __str__(self):
        return self.name
class GoodsChannel(BaseModel):
    """商品频道"""
    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='组内顺序')
    class Meta:
        db_table = 'tb_goods_channel'
        verbose_name = '商品频道'
        verbose_name_plural = verbose_name
    def __str__(self):
        return self.category.name


相关文章
C# DEV TextEdit 设置文本框只能输入数字(整数)
C# DEV TextEdit 设置文本框只能输入数字(整数)
|
前端开发 C++
10分钟,带你掌握C++多线程同步!
本文介绍了C++11中如何开启新线程,并详细讲解了线程的基础同步原语。如何采用async, packaged_task和promise实现future同步机制?怎样处理spurious wakeup?本文以质数判定服务为例为大家分享C++多线程同步措施!
13203 0
|
前端开发 JavaScript 数据格式
echarts异步数据加载(在下拉框选择事件中异步更新数据)
接触echarts 大半年了,从不会到熟练也做过不少的图表,隔了一段时间没使用这玩意,好多东西真心容易忘了。在接触echarts这期间也没有总结什么东西,今天我就来总结一下如何在echart中异步加载数据,在实际的工作的中对数据的刷选非常常见,比如在下拉框中选择,时间选择等的一些事件中异步加载数据。
3575 0
|
存储 前端开发 测试技术
Web实战丨基于django+html+css的在线购物商城
Web实战丨基于django+html+css的在线购物商城
450 2
|
数据可视化 前端开发 JavaScript
基于python flask +pyecharts实现的气象数据可视化分析大屏
本文介绍了一个基于Python Flask和Pyecharts技术实现的气象数据可视化分析大屏,该系统通过图表展示气象数据,提供实时监测和数据分析功能,帮助用户和决策者进行有效应对措施的制定。
510 0
|
关系型数据库 MySQL Java
Flink cdc报错问题之线程不够报错如何解决
Flink CDC报错指的是使用Apache Flink的Change Data Capture(CDC)组件时遇到的错误和异常;本合集将汇总Flink CDC常见的报错情况,并提供相应的诊断和解决方法,帮助用户快速恢复数据处理任务的正常运行。
|
存储 关系型数据库 索引
B+树层数计算(面试官直呼内行)
首先搞清楚一个常识,我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛 在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如XFS/EXT4)他的最小单元是块,一个块的大小是 4k
2314 0
|
SQL 关系型数据库 数据库
Windows server 2016——SQL server 简介与安装
Windows server 2016——SQL server 简介与安装
507 0
|
数据采集 Python
一步教会你如何获取1688商品详情
在当今的互联网时代,获取信息的方式和数量都呈现出爆炸式增长。这其中,商品详情作为重要的信息来源,对于许多人来说都是一项必要的任务。1688作为中国知名的B2B平台,拥有海量的商品信息。本文将通过简单的步骤教你如何获取1688商品详情。