Django商品分类及商品数据建模实例详解

纸上星河
纸上星河
发布时间:2026-10-13 | 6人浏览过
原创

本文详解Django中商品分类与商品的数据建模过程。通过定义包含状态、时间等公共字段的抽象基类,分别构建分类模型与商品模型,实现字段复用与表名指定。随后演示生成并执行迁移文件,完成数据库表结构的创建,为电商系统开发提供基础数据支持。

定义抽象基类

在Django模型设计中,为了减少重复代码并统一管理公共属性,可以定义一个抽象基类。该基类定义了商品类与分类类共有的字段,包括名称字段(限制最大长度为32且唯一)、状态字段(使用SmallIntegerField,默认值为0,其中1表示上架,0表示下架)以及添加时间字段(使用DateTimeField,设置auto_now_add=True以自动记录创建时间)。在Meta类中设置abstract = True,表明该类仅用于继承,不会生成对应的数据库表。


class BaseModle(models.Model):
  name = models.CharField(max_length=32, unique=True)
 # 商品分类状态 1为上架 0 为下架
  status = models.SmallIntegerField(default=0)
 # 添加时间
  addtime = models.DateTimeField(auto_now_add=True)

  class Meta:
    #抽象
   abstract = True

构建分类模型

分类模型继承自上述基类,无需额外定义字段。在Meta类中通过db_table指定生成的数据库表名为'category',确保表名符合命名规范或业务需求。


class Category(BaseModle):

  pass
  class Meta:
    db_table = 'category'  #指定表名

构建商品模型

商品模型同样继承自基类,并扩展了商品特有的字段。包括图片路径字段(CharField,最大长度255)、价格字段(DecimalField,总位数9位,保留2位小数)以及分类外键(ForeignKey关联Category模型,设置on_delete=models.CASCADE以实现级联删除,体现一对多关系)。在Meta类中指定数据库表名为'goods'。


class Goods(BaseModle):
  #商品图片
  img = models.CharField(max_length=255)
  #商品价格  最长9位保留两位小数
  price = models.DecimalField(max_digits=9,decimal_places=2)
  #商品分类外键 级联删除  一对多关系
  cate = models.ForeignKey('Category',on_delete=models.CASCADE)
  class Meta:
    db_table = 'goods'

生成与执行迁移

完成模型定义后,需生成迁移文件以记录模型变更。在终端执行命令python manage.py makemigrations,Django会自动检测模型变化并生成对应的迁移脚本。


python manage.py makemigrations

生成迁移文件后,执行命令python manage.py migrate将迁移应用到数据库。Django会根据迁移脚本创建或更新相应的数据表结构,完成数据库层面的建模。


python manage.py migrate

以上即为Django商品分类及商品数据建模的完整流程。通过抽象基类实现字段复用,结合迁移工具完成数据库同步,为后续业务开发奠定数据基础。感谢阅读。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表