日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django从理论到实战(part30)--Meta配置

發(fā)布時間:2023/12/19 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django从理论到实战(part30)--Meta配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

學(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。