Django商品分类及商品数据建模实例详解
本文详解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商品分类及商品数据建模的完整流程。通过抽象基类实现字段复用,结合迁移工具完成数据库同步,为后续业务开发奠定数据基础。感谢阅读。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









