flask后台管理系统快速开发案例之商品管理功能建模思路

3 篇文章 0 订阅
1 篇文章 0 订阅

先把蓝图搭建好,大家蓝图如果还不会搭建可以翻一下我之前的博客,有讲解

现在打开models文件,进行建模操作
在这里插入图片描述
先看一下我的项目结构
这里是模型里面的代码

class Tag(db.Model):
    __tablename__ = 'tag'
    id = db.Column(db.Integer,primary_key=True)
    uid = db.Column(db.String(128),default=uuid.uuid4,nullable=False,unique=True)
    name = db.Column(db.String(64),nullable=False)
    code = db.Column(db.String(32))
    desc = db.Column(db.String(256))
    is_valid = db.Column(db.Boolean,default=True)
    reorder = db.Column(db.Integer,default=0)
    created_at = db.Column(db.DateTime)
    updated_at = db.Column(db.DateTime)

    def __str__(self):
        return self.name


class Classify(db.Model):
    __tablename__ = 'classify'
    id = db.Column(db.Integer, primary_key=True)
    uid = db.Column(db.String(128), default=uuid.uuid4, nullable=False, unique=True)
    name = db.Column(db.String(64), nullable=False)
    code = db.Column(db.String(32))
    desc = db.Column(db.String(256))
    is_valid = db.Column(db.Boolean, default=True)
    reorder = db.Column(db.Integer, default=0)
    created_at = db.Column(db.DateTime)
    updated_at = db.Column(db.DateTime)

    img = db.Column(db.String(256))
    parent_id = db.Column(db.Integer,db.ForeignKey('classify.id'))

    def __str__(self):
        return self.name


product_classify = db.Table('product_classify',db.Column('product_id',db.Integer,db.ForeignKey('product.id'),primary_key=True),
                            db.Column('classify_id',db.Integer,db.ForeignKey('classify.id'),primary_key=True))


tag_classify = db.Table('tag_classify',db.Column('product_id',db.Integer,db.ForeignKey('product.id'),primary_key=True),
                            db.Column('tag_id',db.Integer,db.ForeignKey('tag.id'),primary_key=True))


class Product(db.Model):
    __tablename__ = 'product'
    id = db.Column(db.Integer, primary_key=True)   #商品id
    uid = db.Column(db.String(128), default=uuid.uuid4, nullable=False, unique=True)  #商品uid
    name = db.Column(db.String(128), nullable=False)  #商品名称
    status = db.Column(db.String(10),nullable=False)  #商品状态
    content = db.Column(db.TEXT,nullable=False)  #商品详情
    desc = db.Column(db.String(256))  #商品描述
    types = db.Column(db.String(10),nullable=False)  #商品性质
    price = db.Column(db.Integer,nullable=False)  #商品价格
    origin = db.Column(db.Float)  #商品原价
    img = db.Column(db.String(256),nullable=False)  #商品图片
    channel = db.Column(db.String(32))  #商品来源
    buy_link = db.Column(db.String(256))  #商品购买链接
    sku_count = db.Column(db.Integer,default=0)  #商品库存
    remain_count = db.Column(db.Integer,default=0)  #商品剩余库存
    view_count = db.Column(db.Integer,default=0)  #浏览次数
    score = db.Column(db.Float,default=10)  #商品分数
    is_valid = db.Column(db.Boolean, default=True)  #是否为有效商品
    reorder = db.Column(db.Integer, default=0)  #商品排序等级
    created_at = db.Column(db.DateTime,default=datetime.now)  #创建时间
    updated_at = db.Column(db.DateTime,default=datetime.now,onupdate=datetime.now)  #更新时间
    classify = db.relationship('Classify',secondary=product_classify,backref=db.backref('cls_product'))  #商品分类
    tag = db.relationship('Tag',secondary=tag_classify,backref=db.backref('tag_product')) #商品标签

这里写的是一个标签类,一个是分类模型,一个是商品类,还有两个是中间多对多的关系表
商品类肯定是不能少的,我写的这个商品类算是比较全面的了,但是在图片方面还有缺陷,应该再建一个关系表来储存商品的图片,因为商品的图片不可能只有一个

但是考虑到是示范案例,所以就不要求这么多课

至此,商品模块的建模先到这了
然后在前端的侧边菜单栏加入功能分区:

<div class="col-sm-3 col-md-2 sidebar">
      <ul class="nav nav-sidebar">
        <li class="active"><a href="/" style="font-size: x-large;background-color: #245269;color: white">数据统计 <span class="sr-only">(current)</span></a></li>
      </ul>
      <ul class="nav nav-sidebar">
        <li><a style="font-size: x-large;background-color: #245269;color: white">商品分区</a></li>
        <li class="nav-item">
            <a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="true" aria-controls="collapseTwo">
              <i class="fas fa-fw fa-cog"></i>
              <span>商品管理</span>
            </a>
            <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
              <div class="bg-white py-2 collapse-inner rounded">
{#                <h6 class="collapse-header">Custom Components:</h6>#}
                <ul>
                    <li><a class="collapse-item" href="{{ url_for('mall.prod_list',page=1) }}">商品列表</a></li>
                    <li><a class="collapse-item" href="{{ url_for('mall.prod_add') }}">新增商品</a></li>
                </ul>
              </div>
            </div>
        </li>
        <li class="nav-item">
            <a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseThree" aria-expanded="true" aria-controls="collapseTwo">
              <i class="fas fa-fw fa-cog"></i>
              <span>标签管理</span>
            </a>
            <div id="collapseThree" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
              <div class="bg-white py-2 collapse-inner rounded">
{#                <h6 class="collapse-header">Custom Components:</h6>#}
                <ul>
                    <li><a class="collapse-item" href="{{ url_for('mall.prod_list',page=1) }}">标签列表</a></li>
                    <li><a class="collapse-item" href="{{ url_for('mall.prod_add') }}">新增标签</a></li>
                </ul>
              </div>
            </div>
        </li>
        <li class="nav-item">
            <a class="nav-link collapsed" href="#" data-toggle="collapse" data-target="#collapseFour" aria-expanded="true" aria-controls="collapseTwo">
              <i class="fas fa-fw fa-cog"></i>
              <span>分类管理</span>
            </a>
            <div id="collapseFour" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionSidebar">
              <div class="bg-white py-2 collapse-inner rounded">
{#                <h6 class="collapse-header">Custom Components:</h6>#}
                <ul>
                    <li><a class="collapse-item" href="{{ url_for('mall.classify_list',page=1) }}">类型列表</a></li>
                    <li><a class="collapse-item" href="{{ url_for('mall.classify_add') }}">新增类型</a></li>
                </ul>
              </div>
            </div>
        </li>
      </ul>
      <ul class="nav nav-sidebar">
        <li><a style="font-size: x-large;background-color: #245269;color: white">用户分区</a></li>
        <li><a href="">用户管理</a></li>
        <li><a href="">地址管理</a></li>
      </ul>
      <ul class="nav nav-sidebar">
        <li><a style="font-size: x-large;background-color: #245269;color: white">购物分区</a></li>
        <li><a href="">订单管理</a></li>
      </ul>
</div>

模型弄好了,接下来开始准备开始编写表单和渲染模板了

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值