01.商品模块表结构分析

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-11-09 11:09  深海海胆  阅读(89)  评论(0)    收藏  举报
Live2D