1 两张表
-一个订单可能包含多门课程
-订单表:订单号,订单生成时间,订单总价格。。。(订单跟订单详情是一对多的关系)
-订单详情表:order,course,该课程的价格。。。
from django.db import models
from user.models import User
from course.models import Course
# 不同app之间的表,可以建立关联关系,导入使用
#user = models.ForeignKey(User) # 不能用引号引起来
class Order(models.Model):
"""订单模型"""
status_choices = (
(0, '未支付'),
(1, '已支付'),
(2, '已取消'),
(3, '超时取消'),
)
pay_choices = (
(1, '支付宝'),
(2, '微信支付'),
)
subject = models.CharField(max_length=150, verbose_name="订单标题")
total_amount = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="订单总价", default=0)
# 咱们生成的订单号(唯一:分布式id生成方案:雪花算法,snowflake)
out_trade_no = models.CharField(max_length=64, verbose_name="订单号", unique=True)
# 支付宝生成的
trade_no = models.CharField(max_length=64, null=True, verbose_name="流水号")
# 订单状态
order_status = models.SmallIntegerField(choices=status_choices, default=0, verbose_name="订单状态")
# 支付类型(支付宝,微信,银联)
pay_type = models.SmallIntegerField(choices=pay_choices, default=1, verbose_name="支付方式")
# 支付时间(付款成功的时候,等支付宝post回调,回掉回来以后,返回数据中有支付时间)
pay_time = models.DateTimeField(null=True, verbose_name="支付时间")
user = models.ForeignKey(User, related_name='order_user', on_delete=models.DO_NOTHING, db_constraint=False, verbose_name="下单用户")
# 订单创建时间
created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
class Meta:
db_table = "luffy_order"
verbose_name = "订单记录"
verbose_name_plural = "订单记录"
def __str__(self):
return "%s - ¥%s" % (self.subject, self.total_amount)