kkxb

 

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)

  

分类:

技术点:

相关文章: