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) 2.admin.py中注册 2.1 goods/admin.py中注册 2.2 user/admin.py中注册 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)