54.Python中Meta类常见的配置
对于一些模型级别的配置。我们可以通过在模型中定义一个类,叫做Meta。然后在这个类中添加一些属性来控制模型的作用。
注意:添加的这个类一定要是Meta,否者的话Django就会不能够识别。
from django.models import models
class Book(models.Model):
name = models.CharField(max_length=100)
author = models.CharField(max_length=100, db_column='author_name')
class Meta:
# 重新自定义映射到数据库中的表的名字
db_table = 'book'
以下对Meta类中的一些常用配置进行讲解。
1. db_table:
- 这个模型映射到数据库中的表名,如果没有指定这个参数,那么在映射的时候就会使用APP名_模型名的形式作为表名。
2.ordering:
- 设置在提取数据的排序方式。比如我可以通过添加的时间进行排序,示例代码如下:
class Book(models.Model):
name = models.CharField(max_length=100)
author = models.CharField(max_length=100, db_column='author_name')
pub_time = models.DateTimeField(auto_now_add=True)
# 重写这个类的__str__(self)方法,以后在调用print()方法来打印Book()这个类的对象时,就会执行这个方法,而不会在打印出一个 "Book Object "
def __str__(self):
# ()中的表示一个什么样的对象,对象名为Book
return "<(Book id: %s, name: %s, author: %s, pub_time: %s)>" % (self.id,self.name,self.author,self.pub_time)
class Meta:
db_table = 'book'
# 首先使用pub_time来进行排序,之后如果时间相同的话,就要使用id进行排序,时间要按倒序的顺序进行排序。即离现在时间近的排在最前面,可以通过使用-好进行反转
ordering = ['-pub_time','id']
# 在这里使用的是一个列表的形式,里面可以传递多个参数,如果使用靠前的参数没有将数据进行排序完成的话,就可以依次使用靠后的参数进行排序。
在views.py中定义一个视图函数:
def order_view(request):
# 首先定义一个Book类的对象books,获取这个对象中的所有数据可以使用objects.all()
books = Book.objects.all()
# 此时如果不重写类的__str__(self)方法,调用print()方法就会打印出 Book Objects x
for book in books:
print(book)
return HttpResponse('排序成功了!')
54.Python中Meta类常见的配置的更多相关文章
- 4、Python中的类详解(0601)
<大话数据结构>的作者程杰在博客园也有博客,网址是:http://cj723.cnblogs.com/ 面向对象编程(OOP) 1.程序 = 指令 + 数据 代码可以选择以指令为核心或以数 ...
- python中的类与继承
Class 类的定义以及实例的建立 Python中,类通过 class 关键字定义. 例如最简单的一个类定义可以为: class Person(object): pass Python 的编程习惯,类 ...
- Python中的类、对象、继承
类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...
- python中的类和实例
今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...
- Python中执行系统命令常见的几种方法--转载
Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执 ...
- Python中的类(上)
在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象. 例如,下面创建了一个Student的类,并且实现了这个类的初始化函数"__init__&quo ...
- python中新式类和经典类
python中的类分为新式类和经典类,具体有什么区别呢?简单的说, 1.新式类都从object继承,经典类不需要. Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Pyth ...
- python中的类(二)
python中的类(二) 六.类的成员 字段:普通字段,静态字段 eg: class Province(): country=’中国’ #静态字段,保存在类中,执行时可以通过类或对象访问 def __ ...
- Python中的类(一)
Python中的类(一) 一. 应用场景 如果多个函数中有一些相同的参数时,转换成面向对象. 二. 如何创建类 类是用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法 ...
随机推荐
- 以stm32f407为例,学习cortex-m4通用寄存器的用法
测试代码如下: int add(int a, int b, int c, int d, int e, int f) { return a+b+c+d+e+f; } int main(void) { i ...
- postfix 被当作垃圾邮件中转站
磁盘 io 总是满的状态 该服务器只有监控和邮件elk在上面. 发现邮件日志 疯狂的输出 tail -f /var/log/maillog 大致都是来自于 yahoo.com.tw的东西 清空了 /v ...
- css横竖屏适配
Css做到横竖屏适配:定义两个样式 { @media screen and (orientation: portrait){ Css[竖向定义样式] } @media screen and (orie ...
- [MacOS]Chrome 强制刷新
Chrome 调试的时候经常发现缓存没有清理 MacOS :⌘+⇧+r Windows:Ctrl + F5
- 题解【[USACO05NOV]奶牛玩杂技】
\[ \texttt{Description} \] 有 \(n\) 头牛,每头牛都有自己的体重 \(W_i\) 和力量 \(S_i\) . 将这 \(n\) 头牛摞在一起,每头牛的压扁指数定义为:压 ...
- 《ASP.NET Core应用开发入门教程》与《ASP.NET Core 应用开发项目实战》正式出版
“全书之写印,实系初稿.有时公私琐务猬集,每写一句,三搁其笔:有时兴会淋漓,走笔疾书,絮絮不休:有时意趣萧索,执笔木坐,草草而止.每写一段,自助覆阅,辄摇其首,觉有大不妥者,即贴补重书,故剪刀浆糊乃不 ...
- springBoot进阶02
SpringBoot进阶02 1. 日志的使用 1.1 基本使用 /** * 获取日志记录器 */ Logger logger = LoggerFactory.getLogger(this.getCl ...
- mysql 主主备份
1.1.主主备份原理. 主主备份实际上是互为主从,主要是为了去缓解写入压力. 1.2.环境准备 两台机器ip分别为 100.100.100.105 (主1) 100.100.100.106(主2) 安 ...
- Java基础之四、字符和字符串 异常处理
字符和字符串是最常用的信息 1:char表示字符 字符常量-两个单引号中间的字符表示字符常量'A' 2:字符串和String 字符串常量-双引号中间的字符序列"Java" 字符串常 ...
- (一)LoadRunner安装
1.下载LR,双击exe安装程序,选择LoadRunner完整安装程序,如下图: 2.点击下一步 3.选择我同意,下一步 4.输入姓名和组织(可以不输入),下一步 5.点击浏览选择要安装的目录,建议使 ...