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中的类(一) 一. 应用场景 如果多个函数中有一些相同的参数时,转换成面向对象. 二. 如何创建类 类是用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法 ...
随机推荐
- OSPFv3与OSPFv2协议的比较
From: http://blog.sina.com.cn/s/blog_61bd83dc0100la2u.html OSPFv3与OSPFv2协议的比较 OSPF是一种链路状态路由协议.它具有标 ...
- ElasticSearch相关概念与客户端操作
一.Elasticsearch概述 Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document).然而它不仅仅是存储,还会索引(i ...
- pikachu-跨站脚本漏洞(XSS)
一.跨站脚本漏洞概述 1.1 什么是XSS漏洞? XSS是一种发生在Web前端的漏洞,其危害的对象也主要是前端用户. 1.2 XSS如何攻击? 二.跨站脚本漏洞类型及测试流程 2.1 跨站脚本 ...
- 回炉重造之重读Windows核心编程-002-字符集
使用Unicode的优势: 便于在不同语言之间进行数据交换. 让你的exe或者dll文件支持所有的语言. 提高应用程序的执行效率. Windows2000是使用Unicode重新开发的,核心部分都需要 ...
- linux 命令行下设置代理
当linux 代理软件设置好后,我们需要设置命令行代理的连接方式,这样在命令行中的软件才能使用: 设置http/https代理: export https_proxy="127.0.0.1: ...
- apue 外传
先上目录 chapter 3 [apue] dup2的正确打开方式 chapter 10 [apue] 等待子进程的那些事儿 chapter 14 [apue] 使用文件记录锁无法实现父子进程交互执行 ...
- 使用PropTypes进行类型检查
原文地址 1.组件特殊属性——propTypes 对Component设置propTypes属性,可以为Component的props属性进行类型检查. import PropTypes from ' ...
- centos配置网络yum源 和本地yum源
一,网络yum源 1.备份 yum文件 cd /etc/ cp -r yum.repos.d yum.repos.d.bak 2.在系统联网的情况下执行下面命令下载 wget -O /etc/yu ...
- opencv —— setMouseCallback 响应鼠标操作事件
鼠标操作:setMouseCallback 函数 借助回调函数,实现对鼠标每次操作的相应,即每进行一步鼠标操作,都会执行一次回调函数. void setMouseCallback(const stri ...
- 服务器控件Repeater
在使用aspx开发中,如果一个页面做纯数据展示,Repeater会比GridView更适合,因为它是轻量级的 下面是最基本的用法: aspx: <table> <asp:Repea ...