商品结构表分析

1.表结构分析

1.1 商品模块表结构分析

   from django.db import models
   from utils.MyBaseModel import Base
   class Goods(Base):
       GOODS_TYPE = (
       ('1', 'Vip'),
       ('2', 'Course')
       )
       CHANNEL_TYPE = (
       ('1', '普通'),
       ('2', '促销')
       )
       course = models.ForeignKey('course.Course', on_delete=models.PROTECT)
       goods_type = models.CharField('商品种类', choices=GOODS_TYPE, max_length=8)
       product_id = models.CharField('产品id', max_length=8)
       title = models.CharField('商品名称', max_length=24)
       price = models.DecimalField('商品价格', max_digits=8, decimal_places=2)
       channel_type = models.CharField('购买渠道', choices=CHANNEL_TYPE,
       max_length=8)
       period = models.IntegerField('有效期', default=365)
       is_launched = models.BooleanField('是否上架', default=True)
       
   	class Meta:
   		db_table = 'tb_goods'
   	def __str__(self):
   		return self.title
   class Orders(Base):
       PAY_METHOD = (
       (1, "支付宝"),
       )
       ORDER_STATUS = (
       (1, "待支付"),
       (2, "已支付"),
       (3, "已取消"),
       )
       user = models.ForeignKey('user.User', on_delete=models.PROTECT,
       verbose_name="下单用户")
       goods = models.ForeignKey(Goods, on_delete=models.PROTECT)
       order_id = models.CharField('订单号', max_length=24)
       trade_no = models.CharField('支付宝订单号', max_length=32, null=True) # 28位
       pay_time = models.DateTimeField('支付时间', null=True)
       pay_method = models.CharField('支付方式', choices=PAY_METHOD, default=1,
       max_length=8)
       status = models.CharField('支付状态', choices=ORDER_STATUS, default=1,
       max_length=8)
       total_amount = models.DecimalField(max_digits=10, decimal_places=2,
       verbose_name="商品总金额")
   	
   	class Meta:
   		db_table = 'tb_orders'
   	def __str__(self):
   		return self.order_id

1.2 course/models.py 中添加用户购买课程

   class UserCourse(Base):
   """
   用户购买的课程
   """
   user = models.ForeignKey('user.User', on_delete=models.CASCADE,
   related_name='paycourse')
   course = models.ForeignKey('course.Course', on_delete=models.CASCADE,
   related_name='payuser')
   class Meta:
   	db_table = 'tb_usercourse'
   def __str__(self):
   	return "用户:%s, 课程:%s" % (self.user.username, self.course.title)

1.3 user/models.py 添加VIP表并添加用户关联

   from django.db import models
   from utils.MyBaseModel import Base
   # 创建Vip表,并和用户进行关联
   class Vip(Base):
   vip_choise = (
   ('0', '普通用户'),
   ('1', '普通会员'),
   ('2', '高级会员'),
   )
   title = models.CharField('vip名称', max_length=16)
   vip_type = models.CharField('Vip种类',choices=vip_choise ,max_length=4)
   desc = models.CharField('vip描述',max_length=255)
   period = models.IntegerField('有效期', default=365)
   class Meta:
   	db_table = 'tb_vip'
   def __str__(self):
   	return self.title
   class User(AbstractUser):
       phone = models.CharField('手机号',max_length=20)
       img = models.ImageField(upload_to='user',null=True)
       nick_name = models.CharField('昵称',max_length=20)
       address = models.CharField('地址',max_length=255)
       vip = models.ForeignKey(Vip, on_delete=models.SET_NULL, default=None,
       null=True)
   
   	vip_expiration = models.DateField('vip到期时间', blank=True, default=None,
   null=True)
   	class Meta:
   		db_table = 'tb_user'

2.admin.py中注册

2.1 goods/admin.py中注册

   from django.contrib import admin
   from . import models
   # Register your models here.
   admin.site.register(models.Goods)
   admin.site.register(models.GoodsCourse)
   admin.site.register(models.Orders)

2.2 user/admin.py中注册

   from django.contrib import admin
   from user import models
   admin.site.register(models.User)
   admin.site.register(models.Vip)
posted @ 2020-10-15 21:44  ihszg  阅读(265)  评论(0编辑  收藏  举报