一.models.py中

class OrderInfo(BaseModel):
'''订单模型类'''
   # 封装一个字典, 便于在视图中取值, 进行比对
PAY_METHODS = {
: "货到付款",
: "微信支付",
: "支付宝",
: '银联支付'
}
  # 这是一个元组里面嵌套元组,里面的元组有两个元素, 一个作为索引, 一个作为值, 和字典里面的数据相对应
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()

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

在 django模型中封装元组和字典, 字段中使用chioce参数实现数据的一一对应的更多相关文章

  1. sql判断以逗号分隔的字符串中是否包含某个字符串--------MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法

    sql判断以逗号分隔的字符串中是否包含某个字符串---------------https://blog.csdn.net/wttykj/article/details/78520933 MYSQL中利 ...

  2. MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法

    首先我们建立一张带有逗号分隔的字符串. CREATE TABLE test(id int(6) NOT NULL AUTO_INCREMENT,PRIMARY KEY (id),pname VARCH ...

  3. mongo中查询Array类型的字段中元素个数

    I have a MongoDB collection with documents in the following format: { "_id" : ObjectId(&qu ...

  4. SQL server中如何按照某一字段中的分割符将记录拆成多条

    现需要将上结果转换为下结果 上结果查询语句:SELECT TOP 1 id,domain FROM dbo.SimpleTask 下结果转换语句:SELECT  a.Id,b.domain FROM ...

  5. Django 模型和数据库 总结

    模型和数据库 模型 首先我们在创建一个model的时候,这个类都是继承自 django.db.models.Model, 各种Model Field类型 AutoField,自动增长的IntegerF ...

  6. python学习笔记3(元组、字典)

    Python中有三种内置的数据类型.dictionary(字典).List(列表)和tuple(元组). 元组(tuple) 只读列表(列表的值可以修改,元组的不可以) 元组与列表类似,不同之处在于元 ...

  7. (转载)MySQL LIKE 用法:搜索匹配字段中的指定内容

    (转载)http://www.5idev.com/p-php_mysql_like.shtml MySQL LIKE 语法 LIKE 运算符用于 WHERE 表达式中,以搜索匹配字段中的指定内容,语法 ...

  8. Django 模型中自定义Manager和模型方法

    1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager. 每个Django模型至少有一个m ...

  9. django模型中的关系对应

    显然,关系数据库的力量在于将表相互关联.Django提供了定义三种最常见的数据库关系类型的方法:多对一,多对多和一对一. 在说明之前,首先来理解一下这三个概念: 多对一: 两个集合a,b;集合a中的多 ...

随机推荐

  1. SpringBoot简单理解

    SpringBoot 一.特点:1.默认大于配置,不需要大量配置文件,没有web.xml,拥有可运行的Application类. 2.一般通过java代码配置,而尽量少使用xml配置. 3.maven ...

  2. MFC The Screen Flickers When The Image Zoomed

    问题描述 当初写MFC也是不情愿的. 既然写了,遇到一些问题. 解决也废了一切功夫.所以简单的记录一下. 这个问题,也就是使用MFC显示图像的时候, 放缩图像的过程中, 图像会一闪一闪的. 这个问题的 ...

  3. Putty建立隧道的方法[z]

    通过上节我们了解了SSH隧道的优点,但是无论是现实中还是网络中,隧道都是有入口和出口的,本节就以Putty隧道为例,详细介绍Putty建立隧道的方法. 模拟案例一: 端口,出口为2012端口,隧道建立 ...

  4. 《OpenGL超级宝典》编程环境配置

    最近在接触OpenGL,使用的书籍就是那本<OpenGL超级宝典>,不过编程环境的搭建和设置还是比较麻烦的,在网上找了很多资料,找不到GLTools.lib这个库.没办法自己就借助源码自己 ...

  5. [Selenium]对于某些对话框即有可能弹出来,也有可能不弹出来,这种应该怎么处理呢?

    界面上如果有一个对话框可能弹出来,也可能不弹出,我们都要认为是正常,应该怎么处理呢? /** * check if release notes dialog present * @author j * ...

  6. Java中的一些代理技术

    使用cglib,asm 对接口进行拦截,这里需要调用Invoke方法 final IUserService userService=new UserService(); Enhancer enhanc ...

  7. 递归,回溯和DFS的区别

    递归是一种算法结构,回溯是一种算法思想一个递归就是在函数中调用函数本身来解决问题回溯就是通过不同的尝试来生成问题的解,有点类似于穷举,但是和穷举不同的是回溯会“剪枝”,意思就是对已经知道错误的结果没必 ...

  8. 用word2016 写CSDN 博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  9. ORA-12541: TNS: 无监听程序、监听程序当前无法识别连接描述符中请求的服务

    %ORACLE_HOME%\product\11.2.0\dbhome_1\NETWORK\ADMIN 这个文件夹下有SAMPLE 里面有详细配置说明 有3个文件, listener.ora sqln ...

  10. 桥接模式及C++实现

    桥接模式 先说说桥接模式的定义:将抽象化(Abstraction)与实现化(Implementation)分离,使得二者可以独立地变化. 桥接模式号称设计模式中最难理解的模式之一,关键就是这个抽象和实 ...