1.表结构分析
1.1 商品模块表结构分析
from django.db import models
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 *
for model in [Goods,Order]:
admin.site.register(model)
2.2 在user/admin.py
中注册
from django.contrib import admin
from .models import User,Vip
admin.site.register(User)
admin.site.register(Vip)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· 手把手教你更优雅的享受 DeepSeek
· 腾讯元宝接入 DeepSeek R1 模型,支持深度思考 + 联网搜索,好用不卡机!
· AI工具推荐:领先的开源 AI 代码助手——Continue
· 探秘Transformer系列之(2)---总体架构
· V-Control:一个基于 .NET MAUI 的开箱即用的UI组件库