首页 > 技术文章 > 商品模块表结构分析

kai0118 2020-10-16 11:21 原文

 

  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)
   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)
   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. 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. user/models.py添加VIP表并添加用户关联

from django.db import models
from utils.MyBaseModel import Base

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'
       
  1. admin.py中注册

#goods/admin
from django.contrib import admin
from . import models

admin.site.register(models.Goods)
admin.site.register(models.Orders)




# user/admin
from django.contrib import admin
from user import models

admin.site.register(models.User)
admin.site.register(models.Vip)

 

推荐阅读