对于一些模型级别的配置。我们可以通过在模型中定义一个类,叫做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类常见的配置的更多相关文章

  1. 4、Python中的类详解(0601)

    <大话数据结构>的作者程杰在博客园也有博客,网址是:http://cj723.cnblogs.com/ 面向对象编程(OOP) 1.程序 = 指令 + 数据 代码可以选择以指令为核心或以数 ...

  2. python中的类与继承

    Class 类的定义以及实例的建立 Python中,类通过 class 关键字定义. 例如最简单的一个类定义可以为: class Person(object): pass Python 的编程习惯,类 ...

  3. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  4. python中的类和实例

    今天花了两个多小时后搜索相关博客看了看python中有关类和实例的介绍,差不多大概明白了. python中的类和c++中的类是一样的,不同之处就是c++的类,如果含有成员变量,并且成员变量发生变化后, ...

  5. Python中执行系统命令常见的几种方法--转载

    Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执 ...

  6. Python中的类(上)

    在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象. 例如,下面创建了一个Student的类,并且实现了这个类的初始化函数"__init__&quo ...

  7. python中新式类和经典类

    python中的类分为新式类和经典类,具体有什么区别呢?简单的说, 1.新式类都从object继承,经典类不需要. Python 2.x中默认都是经典类,只有显式继承了object才是新式类 Pyth ...

  8. python中的类(二)

    python中的类(二) 六.类的成员 字段:普通字段,静态字段 eg: class Province(): country=’中国’ #静态字段,保存在类中,执行时可以通过类或对象访问 def __ ...

  9. Python中的类(一)

    Python中的类(一) 一. 应用场景 如果多个函数中有一些相同的参数时,转换成面向对象. 二. 如何创建类 类是用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法 ...

随机推荐

  1. HBASE手动触发major_compact

    1.定时执行脚本#!/bin/bash source /etc/profile sh ./hbase shell <<EOF major_compact 'table_name' EOF ...

  2. mac 软件相关的

    mac 系统教学 https://www.w3cschool.cn/macdevsetup/carp1i83.html 可以查看的软件网站 https://www.ifunmac.com/ https ...

  3. 处理jquery 中 给disabled属性不传值的问题

    问题:审核页面加入不可编辑的判断后,点击[审核]按钮,报错,form表单的数据没有传递过去. 下面是js中加入的代码,用来判断是否是审核页面的,去掉此代码,点击[审核]按钮能正常传递数据,加入的话,无 ...

  4. 【GET TIPS】Chrome所见即所得的截图技巧

    精简的前言: 对,我就是想说下事情的来龙去脉.您要不想听,就把耳朵捂起来23333. 想截个新冠肺炎病毒,全国确诊人数今日增长的图,以确定非湖北地区不再明显增长. 但由于网页需要的内容分布在两页,需要 ...

  5. mysql必知必会-创建高级联结

    使用表别名 使用别名引用被检索的表列 别名除了用于列名和计算字段外,SQL还允许给表名起别名.这样做 有两个主要理由: 缩短SQL语句: 允许在单条 SELECT 语句中多次使用相同的表. 可以看到, ...

  6. opencv —— contourArea、arcLength 计算轮廓面积与长度

    计算轮廓面积:contourArea 函数 double contourArea(InputArray contour, bool oriented = false); contour,输入的二维点集 ...

  7. MySQL 8 InnoDB Table 和 Page 压缩

    压缩用一点CPU换取磁盘IO.内存空间.磁盘空间. 在有Secondary Indexes 的表中,使用压缩更加明显,相关索引数据也会压缩. InnoDB 表压缩 对表压缩只需要在Create Tab ...

  8. 用Python制作酷炫词云图,原来这么简单!

    一.简介词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中地高频词:! 图1 词云图示例 在Python中有很多可视化框架可以用来制作词云图,如pyecharts,但这些 ...

  9. mysql 表结构操作

    alter table name : alter table table1 to table2;add column : alter table 表名 add column 列名 varchar(); ...

  10. HTML概念、语法及常用基础标签

    HTML基础语法 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...