27.商品模块表结构分析

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表并添加用户关联

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, blank=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'
        verbose_name_plural = '用户'

2. 在admin中注册

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:56  远山渡月  阅读(101)  评论(0编辑  收藏  举报