zoukankan      html  css  js  c++  java
  • 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('排序成功了!')
    
    始于才华,忠于颜值;每件事情在成功之前,看起来都是天方夜谭。一无所有,就是无所不能。
  • 相关阅读:
    JQuery新浪1630个表情插件
    时间轴Jquery特效
    微博分享Jquery插件
    分享一款解析json数据包获取全国学校Jquery特效
    视频播放插件
    如何将word中的数据导入到数据库中
    在留资格到了
    090310 晴
    090306 雨
    胃的保养
  • 原文地址:https://www.cnblogs.com/guyan-2020/p/12217476.html
Copyright © 2011-2022 走看看