先把蓝图搭建好,大家蓝图如果还不会搭建可以翻一下我之前的博客,有讲解
现在打开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>
模型弄好了,接下来开始准备开始编写表单和渲染模板了