碼農和規矩
阿新 • • 發佈:2020-11-06
1.表結構分析
1.1 商品模組表結構分析
from django.db import models # Create your models here. class Base(models.Model): create_time = models.TimeField(auto_now_add=True) update_time = models.TimeField(auto_now=True) class Meta: abstract = True # 商品表 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) produce_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.CharField('購買渠道',max_length=365) is_launched = models.BooleanField(default=True) class Meta: db_table = 'goods' def __str__(self): return self.title # 訂單表 class Order(Base): PAY_METHOD = ( (1, "支付寶"), ) ORDER_STATUS=( (1, "待支付"), (2, "已支付"), (3, "已取消"), ) user = models.ForeignKey('app01.User',on_delete=models.PROTECT) goods = models.ForeignKey(Goods,on_delete=models.PROTECT) order_id = models.CharField(max_length=24) trade_no = models.CharField(max_length=32,null=True) 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 # 使用者購買課程 class User_Course(Base): user = models.ForeignKey('app01.User', on_delete=models.CASCADE, default=None, related_name='payuser') course = models.ForeignKey('course.Course', on_delete=models.CASCADE, related_name='paycourse',default=None) class Meta: db_table = 'usercourse'
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 .models import *
# Register your models here.
for model in [Goods,Order]:
admin.site.register(model)
2.2 在user/admin.py
中註冊
from django.contrib import admin from .models import User,Vip # Register your models here. admin.site.register(User) admin.site.register(Vip)