Django从理论到实战(part30)--Meta配置
學(xué)習(xí)筆記,僅供參考
參考自:Django打造大型企業(yè)官網(wǎng)–Huang Y;
本系列Blog以應(yīng)用為主,理論基礎(chǔ)部分我在后端專欄的Django系列博客已經(jīng)寫過了,如果有些需要補(bǔ)充的知識點,我會在這個系列中,盡量詳細(xì)的記錄一下。
Meta配置
對于模型級別的配置,我們可以在models.py模塊中定義一個叫Meta的類來處理。
在這個類中,我們可以添加一些類屬性來控制模型,比如,我們想要在數(shù)據(jù)庫映射時使用自己指定的表名,而不是使用模型的名稱,那么我們可以在Meta類中設(shè)置db_table屬性,例如:
class Book(models.Model):name = models.CharField(max_length=20,null=False)desc = models.CharField(max_length=100,name='description',db_column="description1")class Meta:db_table = 'book_model'Meta類的常用配置
- db_table
該參數(shù)可以設(shè)置這個模型映射到數(shù)據(jù)庫中的表名,如果沒有指定這個參數(shù),那么在映射的時候?qū)褂脩?yīng)用名_模型名來作為默認(rèn)的表名。
- ordering
設(shè)置在提取數(shù)據(jù)的排序方式,比如我想在查找數(shù)據(jù)的時候根據(jù)price降序排序:
ordering = ['-price']舉個例子
修改models.py:
from django.db import models# Create your models here.class Book(models.Model):#定義一個自增長的主鍵bookid = models.AutoField(primary_key = True)name = models.CharField(max_length=20,null=False)author = models.CharField(max_length=20,null=False)price = models.FloatField(default=0)def __str__(self):return "[name:{}, author:{}, price:{}]".format(self.name, self.author, self.price)class Meta:db_book = "mynewbookstore"#定義數(shù)據(jù)庫中的表名為mynewbookstorordering = ['-price', 'name']#按照價格降序排序,相同時參考name參數(shù)添加路由:
from django.contrib import admin from django.urls import path from . import viewsurlpatterns = [path('add_book/', views.add_book),path('show_books/', views.show_books), ]設(shè)置視圖函數(shù):
from django.http import HttpResponse from .models import Book# Create your views here.def add_book(request):book = Book(name = "統(tǒng)計學(xué)", author = "賈俊平", price = 25)book.save()return HttpResponse("圖書添加成功!")def show_books(request):books = Book.objects.all()for book in books:print(book)return HttpResponse("<h2>ARE YOU OK?</h2>")遷移:
python manage.py makemigrations python manage.py migrate查看數(shù)據(jù)庫中的數(shù)據(jù)表:
mysql> show tables; +----------------------------+ | Tables_in_mynewbook | +----------------------------+ | auth_group | | auth_group_permissions | | auth_permission | | auth_user | | auth_user_groups | | auth_user_user_permissions | | django_admin_log | | django_content_type | | django_migrations | | django_session | | mynewbookstore | +----------------------------+ 11 rows in set (0.00 sec)可以看到,表名已經(jīng)改為了mynewbookstore
向http://127.0.0.1:8000/bookstore/show_books/發(fā)起請求:
查看終端:
[name:應(yīng)用預(yù)測建模, author:Max, price:30.0] [name:多元統(tǒng)計分析, author:何曉群, price:25.0] [name:統(tǒng)計學(xué), author:賈俊平, price:25.0] [name:網(wǎng)絡(luò)工程師, author:朱小平, price:21.0] [name:應(yīng)用回歸分析, author:何曉群, price:20.0] [name:mysql必知必會, author:Ben, F, price:15.0] [09/Jul/2020 11:02:57] "GET /bookstore/show_books/ HTTP/1.1" 200 20 Not Found: /favicon.ico [09/Jul/2020 11:02:58] "GET /favicon.ico HTTP/1.1" 404 2089可以看到,數(shù)據(jù)按照price以及name進(jìn)行了排序.
總結(jié)
以上是生活随笔為你收集整理的Django从理论到实战(part30)--Meta配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 形容人的脸皮厚成语
- 下一篇: 数据挖掘学习日志(part1)--熵值法