zoukankan      html  css  js  c++  java
  • 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.2user/admin.py中注册

    from django.contrib import admin
    from user import models
    admin.site.register(models.User)
    admin.site.register(models.Vip)
    
  • 相关阅读:
    Codeforces1101G (Zero XOR Subset)-less 【线性基】【贪心】
    Codeforces1101F Trucks and Cities 【滑动窗口】【区间DP】
    HDU4651 Partition 【多项式求逆】
    BZOJ2554 color 【概率DP】【期望DP】
    codeforces1101D GCD Counting 【树形DP】
    codechef EBAIT Election Bait【欧几里得算法】
    BZOJ2434 [NOI2011] 阿狸的打字机 【树链剖分】【线段树】【fail树】【AC自动机】
    codeforces1093G Multidimensional Queries 【线段树】
    BZOJ3277 串 【后缀数组】【二分答案】【主席树】
    AHOI2013 差异 【后缀数组】
  • 原文地址:https://www.cnblogs.com/xiangnuan/p/13823412.html
Copyright © 2011-2022 走看看