In order to facilitate the development, and future maintenance of the project, we once again create a sub-application orders to complete the next payment orders and order functions.
cd luffy/apps
python ../../manage.py startapp orders
Registration sub-applications, settings / dev.py, Code:
= INSTALLED_APPS [ # sub-applications . . . ' Orders ' , ]
from django.db Import Models # the Create your Models here Wallpaper. from luffy.utils.models Import BaseModel from users.models Import the User from courses.models Import Course, class the Order (BaseModel): "" " Order History " "" status_choices = ( ( 0, ' non-payment ' ), ( 1, ' paid ' ), ( 2, ' canceled ' ), ( 3, ' timeout canceled ' ), ) pay_choices = ( (0, ' Alipay ' ), ( 1, ' micro-channel pay ' ) ) order_title = models.CharField (max_length = 150, verbose_name = " order header " ) total_price = Models .DecimalField (max_digits =. 6, decimal_places = 2, the verbose_name = " total order " , default = 0) real_price = models.DecimalField (max_digits =. 6, decimal_places = 2, the verbose_name = "The amount actually paid ." , default = 0) ORDER_NUMBER = models.CharField (= 64 MAX_LENGTH, the verbose_name = " Order Number " ) order_status The = models.SmallIntegerField (= status_choices choices, default = 0, the verbose_name = " Order Status " ) pay_type = Models. SmallIntegerField (choices = pay_choices, default = 0, verbose_name = " payment " ) use_coupon = models.BooleanField (default = False, verbose_name = " whether to use the coupon " ) coupon = models.IntegerField (null = True, verbose_name = " user coupon ID " ) order_desc = models.TextField(max_length=500, verbose_name="订单描述") pay_time = models.DateTimeField(null=True, verbose_name="支付时间") user = models.ForeignKey(User, related_name='user_orders', on_delete=models.DO_NOTHING,verbose_name="下单用户") class Meta: db_table="ly_order" verbose_name= "订单记录" verbose_name_plural= "Order History " def __str__(self): return "%s,总价: %s,实付: %s" % (self.order_title, self.total_price, self.real_price) class OrderDetail(BaseModel): """订单详情""" order = models.ForeignKey(Order, related_name='order_courses', on_delete=models.CASCADE, verbose_name="订单") course = models.ForeignKey(Course, related_name='course_orders', on_delete=models.CASCADE, verbose_name="课程") expire Models.IntegerField = (default = ' -1 ' , the verbose_name = " validity period " ) . Price = models.DecimalField (max_digits =. 6, decimal_places = 2, the verbose_name = " Course List " ) real_price = models.DecimalField (max_digits =. 6, 2 = decimal_places, verbose_name = " course Nett " ) discount_name = models.CharField (max_length = 120, default = "" , verbose_name = " Offer type " ) class Meta: db_table = " ly_order_detail " verbose_name = " Order details " verbose_name_plural = " Order details "
Creating adminx.py in the current sub-applications, the code:
Import xadmin from .models Import the Order class OrderModelAdmin (Object): "" " Order Management model " "" Pass xadmin.site.register (the Order, OrderModelAdmin) from .models Import OrderDetail class OrderDetailModelAdmin (Object): "" " Order details model management "" " Pass xadmin.site.register (OrderDetail, OrderDetailModelAdmin)
Back-end implementation of api interface to generate orders