zoukankan      html  css  js  c++  java
  • 在 django模型中封装元组和字典, 字段中使用chioce参数实现数据的一一对应

    一.models.py中

    class OrderInfo(BaseModel):
        '''订单模型类'''
       # 封装一个字典, 便于在视图中取值, 进行比对
    PAY_METHODS = { 1: "货到付款", 2: "微信支付", 3: "支付宝", 4: '银联支付' }   # 这是一个元组里面嵌套元组,里面的元组有两个元素, 一个作为索引, 一个作为值, 和字典里面的数据相对应 PAY_METHOD_CHOICES = ( (1, '货到付款'), (2, '微信支付'), (3, '支付宝'), (4, '银联支付') )
    ORDER_STATUS
    = { 1:'待支付', 2:'待发货', 3:'待收货', 4:'待评价', 5:'已完成' } ORDER_STATUS_CHOICES = ( (1, '待支付'), (2, '待发货'), (3, '待收货'), (4, '待评价'), (5, '已完成') ) order_id = models.CharField(max_length=128, primary_key=True, verbose_name='订单id') user = models.ForeignKey('user.User', verbose_name='用户') addr = models.ForeignKey('user.Address', verbose_name='地址')
       # 自己定义的元组 pay_method
    = models.SmallIntegerField(choices=PAY_METHOD_CHOICES, default=3, verbose_name='支付方式') total_count = models.IntegerField(default=1, verbose_name='商品数量') total_price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='商品总价') transit_price = models.DecimalField(max_digits=10, decimal_places=2,verbose_name='订单运费')
                                   # 自己定义的元组 order_status
    = models.SmallIntegerField(choices=ORDER_STATUS_CHOICES, default=1, verbose_name='订单状态') trade_no = models.CharField(max_length=128, default='', verbose_name='支付编号') class Meta: db_table = 'df_order_info' verbose_name = '订单' verbose_name_plural = verbose_name

    二.在视图views.py中进行取值和重新赋值的方式如下

    取值

     try:
        order = OrderInfo.objects.get(order_id=order_id, user=user)
    except OrderInfo.DoesNotExist: # 当路径匹配中使用了分组的并且命名的参数, 就应该使用 kwargs = {} 字典中写上分组的名字(键)和值 return redirect(reverse('user:order', kwargs={'page': 1})) # 获取订单的支付状态名称 order.order_status 得到是对应的索引值 再通过字典取值的方式获取数据 order_status_name = OrderInfo.ORDER_STATUS[order.order_status]

    重新赋值

     order.order_status = 4  # 待评价
     order.save()

     简单来说就是在数据库中保存一个代号, 然后根据这个代码在模型中找到对应的参数, 实现已经在模型中将代号和参数一一对应的关系进行了定义

  • 相关阅读:
    第十一作业
    第十次作业
    06 逻辑回归
    05 线性回归算法
    04 K均值算法--应用
    03 K均值算法
    02 机器学习相关数学基础
    01 机器学习概述
    15 语法制导的语义翻译
    014 算符优先分析
  • 原文地址:https://www.cnblogs.com/lowmanisbusy/p/9142843.html
Copyright © 2011-2022 走看看