Django学习---4.商城数据库搭建与使用

Django对不同数据库有很好的支持,但是不同数据库之间操作必然存在一些差异,为了解决这个差异性,Django使用统一的API方法来屏蔽不同数据库之间的差异性,这些API统称为ORM框架。

from django.db import models

# 项目应用commodity的models.py


class Types(models.Model):
    # 对应商品类别表
    id = models.AutoField(primary_key=True)
    firsts = models.CharField('一级类型', max_length=100)
    seconds = models.CharField('二级类型', max_length=100)
    
    def __str__(self):
        return str(self.id)
    
    class Meta:
        verbose_name = '商品类型'
        verbose_name_plural = '商品类型'
        

class CommodityInfos(models.Model):
    # 对应商品信息表
    id = models.AutoField(primary_key=True)
    name = models.CharField('商品名称', max_length=100)
    sezes = models.CharField('商品规格', max_length=100)
    types = models.CharField('商品类型', max_length=100)
    price = models.FloatField('商品价格')
    discount = models.FloatField('折后价格')
    stock = models.IntegerField('库存数量')
    sold = models.IntegerField('销售数量')
    likes = models.IntegerField('收藏数量')
    created = models.DateField('上架时间', auto_now_add=True)
    img = models.FileField('商品主图', upload_to=r'imgs')
    detail = models.FileField('商品介绍', upload_to=r'details')
    
    def __str__(self):
        return str(self.id)
    
    class Meta:
        verbose_name = '商品信息'
        verbose_name_plural = '商品信息'
        

 上面代码就是这二张表的信息。同理,可以设置其余二张表的信息

from django.db import models

STATE = (
    ('待支付', '待支付'),
    ('已支付', '已支付'),
    ('发货中', '发货中'),
    ('已签收', '已签收'),
    ('退货中', '退货中'),
)


class CartInfos(models.Model):
    id = models.AutoField(primary_key=True)
    quantity = models.IntegerField('购买数量')
    commodityInfos_id = models.IntegerField('商品ID')
    user_id = models.IntegerField('用户ID')
    
    def __str__(self):
        return str(self.id)
    
    class Meta:
        verbose_name = '购物车'
        verbose_name_plural = '购物车'
        

class OrderInfos(models.Model):
    id = models.AutoField(primary_key=True)
    price = models.FloatField('订单总额')
    created = models.DateField('创建时间', auto_now_add=True)
    user_id = models.IntegerField('用户ID')
    state = models.CharField('订单状态', max_length=20, choices=STATE)
    
    def __str__(self):
        return str(self.id)
    
    class Meta:
        verbose_name = '订单信息'
        verbose_name_plural = '订单信息'

 说明:

id = models.AutoField(primary_key=True)  一般用于主键

 

 

 0001_initial.py文件将models.py文件定义的模型生成数据库表的脚步代码,可以被migrate指令执行,进而在数据库中生成相应的表。。

 连接数据库测试时我们执行过这么一条代码:它是生成Django默认生成的数据表。在此执行这个指令并不会重复创建数据表。

python manage.py migrate

 如果只想执行某个项目应用commondity 的migrations文件夹下某个.py文件,那么指令如下:

python manage.py migrate commodity 0001_initial

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值