订单管理-格式化日期-HTML

定义模型类

from django.db import models
from users.models import *
from goods.models import *


# Create your models here.

# 地址信息
class Addr(models.Model):
    receiver = models.CharField('收件人', max_length=20)
    receiver_mobile = models.CharField('手机号', max_length=11)
    receiver_addr = models.CharField('地址', max_length=100)
    user = models.ForeignKey(User, on_delete=models.CASCADE, verbose_name='用户')

    def __str__(self):
        return f'用户{self.user.username}的收货地址,收件人{self.receiver}'

    class Meta:
        db_table = 'addr'


# 订单信息表
class OrderInfo(models.Model):
    PAY_METHOD = (
        (1, '支付宝'),
        (2, '微信支付'),
        (3, '银联支付'),
        (4, '货到付款')
    )
    STATUS = (
        (1, '待支付'),
        (2, '代发货'),
        (4, '待评价'),
        (5, '已完成')
    )
    order_id = models.CharField('订单编号', max_length=64, primary_key=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='orders', verbose_name='下单用户')
    addr = models.ForeignKey(Addr, on_delete=models.CASCADE, verbose_name='收货地址')
    total_count = models.IntegerField('商品数量', default=1)
    total_amount = models.DecimalField('总价格', max_digits=10, decimal_places=2)
    treight = models.DecimalField('邮费', max_digits=10, decimal_places=2)
    pay_method = models.SmallIntegerField('支付方式', default=1, choices=PAY_METHOD)
    status = models.SmallIntegerField('支付状态', default=1, choices=STATUS)
    created_time = models.DateTimeField('订单时间', auto_now_add=True)

    def __str__(self):
        return self.order_id

    class Meta:
        db_table = 'order_info'


# 订单商品
class OrderGood(models.Model):
    SCORE = (
        (1, '20分'),
        (2, '40分'),
        (3, '60分'),
        (4, '80分'),
        (5, '100分')
    )
    sku = models.ForeignKey(SKU, on_delete=models.CASCADE, verbose_name='商品')
    count = models.IntegerField('购买数量', default=1)
    price = models.DecimalField('价格', max_digits=10, decimal_places=2)
    order = models.ForeignKey(OrderInfo, on_delete=models.CASCADE, related_name='goods', verbose_name='订单')
    comment = models.TextField('评论信息', default='')
    score = models.SmallIntegerField('评分', default=5, choices=SCORE)
    is_anonymous = models.BooleanField('是否匿名评论', default=False)
    is_commented = models.BooleanField('是否评论', default=False)

    def __str__(self):
        return f'订单{self.order.order_id}-商品{self.sku.name}'

    class Meta:
        db_table = 'order_good'


# 支付信息
class PayInfo(models.Model):
    trade_id = models.CharField('支付编号', max_length=100, unique=True, null=True, blank=True)
    order = models.ForeignKey(OrderInfo, on_delete=models.CASCADE, verbose_name='订单')

    def __str__(self):
        return f'交易{self.trade_id}'

    class Meta:
        db_table = 'pay_info'

定义序列化器

from rest_framework import serializers
from orders.models import *

# 订单信息的序列化器
class OrderInfoSer(serializers.ModelSerializer):
    # 返回支付方式
    status_name = serializers.SerializerMethodField(read_only=True)
    def get_status_name(self, obj):
    	# get_status_display()可以直接获取对应的序号
        return obj.get_status_display()

    # 返回用户名
    user_name = serializers.SerializerMethodField(read_only=True)
    def get_user_name(self, obj):
        return obj.user.username

    class Meta:
        model = OrderInfo
        fields = '__all__'
        read_only_fields = ['id']


# 订单商品的序列化器
class OrderGoodSer(serializers.ModelSerializer):
    class Meta:
        model = OrderGood
        fields = '__all__'
        read_only_fields = ['id']

视图方法

from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet
from rest_framework.response import Response
from orders.models import *
from orders.serializers import *
from goods.serializers import *

# Create your views here.

# 订单信息的视图
class OrderInfoViewSet(ModelViewSet):
    queryset = OrderInfo.objects.all()
    serializer_class = OrderInfoSer
    lookup_field = 'pk'
    lookup_url_kwarg = 'pk'

    # 重写retrieve方法
    def retrieve(self, request, *args, **kwargs):
        # 获取需要搜索的订单对象
        order = self.get_object()
        order_ser = self.get_serializer(order)

        # 获取订单商品
        order_goods = order.goods.all()
        order_goods_ser = OrderGoodSer(order_goods, many=True)

        # 将每个订单商品中的删库值换成商品字典数据
        temp_list = []
        for i in order_goods_ser.data:
            i['sku'] = SKUSer(SKU.objects.filter(id=i.get('sku')).first()).data
            temp_list.append(i)

        # 数据结构
        order_dict = order_ser.data
        order_dict['skus'] = temp_list

        return Response(order_dict)

路由

from django.urls import path
from rest_framework.routers import DefaultRouter
from orders import views

router = DefaultRouter()
router.register('orderInfo', views.OrderInfoViewSet)

urlpatterns = []

urlpatterns += router.urls

展示搜索的订单对象为

在这里插入图片描述

前端展示时间,两种方法

  1. 表格渲染时间
<!-- 使用后:formatter调用函数 -->
<el-table-column prop="created_time" label="创建时间" :formatter="formatDate"> </el-table-column>
methods: {
	// 格式化日期
	formatDate(row, col){
		// 获取对应的属性
		let value = row[col.property]
		if (!value){return}
		let myDate = new Date(value) 
		return myDate.getFullYear() + '-' + (myDate.getMonth()+1) + '-' + myDate.getDate()
		+ ' ' + myDate.getHours() + ':' + myDate.getMinutes() + ':' + myDate.getSeconds()
	}
  }
  1. 直接渲染
<!-- 过滤器formatDate -->
时间:{{ oOrder.created_time | formatDate }}
// 过滤器
  filters:{
    formatDate(value){
      if (!value){return}
      let myDate = new Date(value)
      return myDate.getFullYear() +'-'+ (myDate.getMonth()+1) +'-'+ myDate.getDate() +' '+
      myDate.getHours() +":"+ myDate.getMinutes() +":"+ myDate.getSeconds()
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值