zoukankan      html  css  js  c++  java
  • 商品模块表结构分析

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

    from django.contrib import admin 
    from user import models 
    
    admin.site.register(models.User) 
    admin.site.register(models.Vip)
  • 相关阅读:
    IP和java.net.InetAddress类的使用
    Redis(五):几个常用概念
    Redis(一):概述
    mongodb写入策略(WriteConcern)
    mongodb配置详解
    MongoDB优化
    Python 多进程异常处理
    Python多进程编程-进程间协作(Queue、Lock、Semaphore、Event、Pipe)
    Mongodb 性能测试
    把 MongoDB 当成是纯内存数据库来使用(Redis 风格)
  • 原文地址:https://www.cnblogs.com/nbzyf/p/13821044.html
Copyright © 2011-2022 走看看