1. 程式人生 > >Django中的元類Meta

Django中的元類Meta

通過一個內嵌類 "class Meta" 給你的 model 定義元資料, 類似下面這樣:

class Foo(models.Model): 
    bar = models.CharField(maxlength=30)

    class Meta: 
        # ...

Django 模型類的Meta是一個內部類,它用於定義一些Django模型類的行為特性

來看看class Meta可以下面可以寫一些什麼特性:

  • app_label

app_label這個選項只在一種情況下使用,就是你的模型類不在預設的應用程式包下的models.py檔案中,這時候你需要指定你這個模型類是那個應用程式的。比如你在其他地方寫了一個模型類,而這個模型類是屬於myapp的,那麼你這是需要指定為:

app_label='myapp'

  • db_table

db_table是用於指定自定義資料庫表名的。Django有一套預設的按照一定規則生成資料模型對應的資料庫表名,如果你想使用自定義的表名,就通過這個屬性指定,比如:

table_name='my_owner_table'

  • db_tablespace

有些資料庫有資料庫表空間,比如Oracle。你可以通過db_tablespace來指定這個模型對應的資料庫表放在哪個資料庫表空間。

  • get_latest_by

由於Django的管理方法中有個lastest()方法,就是得到最近一行記錄。如果你的資料模型中有 DateField 或 DateTimeField 型別的欄位,你可以通過這個選項來指定lastest()是按照哪個欄位進行選取的。

  • managed

由於Django會自動根據模型類生成對映的資料庫表,如果你不希望Django這麼做,可以把managed的值設定為False。

  • order_with_respect_to

這個選項一般用於多對多的關係中,它指向一個關聯物件。就是說關聯物件找到這個物件後它是經過排序的。指定這個屬性後你會得到一個get_XXX_order()和set_XXX_order()的方法,通過它們你可以設定或者回去排序的物件。

  • ordering

這個欄位是告訴Django模型物件返回的記錄結果集是按照哪個欄位排序的。比如下面的程式碼:

ordering=['order_date'] # 按訂單升序排列
ordering=['-order_date'] # 按訂單降序排列,-表示降序
ordering=['?order_date'] # 隨機排序,?表示隨機

  • permissions

permissions主要是為了在Django Admin管理模組下使用的,如果你設定了這個屬性可以讓指定的方法許可權描述更清晰可讀。

  • proxy

這是為了實現代理模型使用的,這裡先不講隨後的文章介紹。

  • unique_together

unique_together這個選項用於:當你需要通過兩個欄位保持唯一性時使用。比如假設你希望,一個Person的FirstName和LastName兩者的組合必須是唯一的,那麼需要這樣設定:

unique_together = (("first_name", "last_name"),)

  • verbose_name     # 這個和lable的區別的是,lable可以在form上顯示,而它不顯示,只是個說明或者註釋

verbose_name的意思很簡單,就是給你的模型類起一個更可讀的名字:

verbose_name = "pizza"

  • verbose_name_plural

這個選項是指定,模型的複數形式是什麼,比如:

verbose_name_plural = "stories"

如果不指定Django會自動在模型名稱後加一個’s’

相關推薦

西遊之路——python全棧——Django模型Meta物件瞭解

目錄 Django中模型類中Meta元物件瞭解   1.使用python manage.py shell 進入編輯命令列模式,可以直接進入專案(為我們配置好了環境)   2.對於元類資料的獲取,需要使用_meta獲取   3.幾個重要屬性    

DjangoMeta

通過一個內嵌類 "class Meta" 給你的 model 定義元資料, 類似下面這樣: class Foo(models.Model): bar = models.CharField(maxlength=30) class Meta:

django-Meta

verbose pub chinese gopro .com nes HR 添加 表結構 模型元選項 文檔有更多Meta類的配置屬性: English:https://docs.djangoproject.com/en/1.11/ref/models/options/,

【原創】Python 對象創建過程, __new__, __call__, __init__ 的處理

diff regular luci 自定義 weight ica 一般來說 att ray 原始type: type是最原始的元類,其__call__方法是在你使用" t_class = type(classname_string, base_classes_tuple,

python

ech 變量 creat 類的定義 增加方法 sat variable 復雜 .... 元類 1. 類也是對象 在大多數編程語言中,類就是一組用來描述如何生成一個對象的代碼段。在Python中這一點仍然成立: >>> class ObjectCreator

python的作用

#-*- coding:utf-8 -*- def upper_attr(class_name, class_parents, class_attr): #遍歷屬性字典,把不是__開頭的屬性名字變為大寫 new_attr = {} for name,value

DRF---Django 模型序列化器 ModelSerializer

關於常規的Serializer使用方法,可以參考 常規的Serializer講解 如果我們需要使用的序列化器,是對應Django的模型類,那麼,DRF已經為我們提供了ModelSerializer模型類序列化器,可以滿足我們的需求,快速建立一個Serializer類。 Mode

DRF---Django 模型序列化器 ModelSerializer

關於常規的Serializer使用方法,可以參考 常規的Serializer講解 如果我們需要使用的序列化器,是對應Django的模型類,那麼,DRF已經為我們提供了ModelSerializer模型類序列化器,可以滿足我們的需求,快速建立一個Serializ

django 的 class Meta 的理解

在使用 Django 的 ORM 模型進行資料庫的設計時,我們常常會看到在models 中經常會出現一個 class Meta 的內部類,那它的作用是什麼呢? db_table 屬性:自定義資料表的名稱,是可選屬性。預設資料表的命名規則為: 應用名_類名。   例如:你建立了一個名為 blog 的應用

Django-models class Meta:

設置 div rmi 應用 默認值 htm 字段排序 als 簡單 Django模型之Meta選項詳解 Model 元數據就是 "不是一個字段的任何數據" -- 比如排序選項, admin 選項等等. Django模型類的Meta是一個內部類,它用於定義一些Djan

python(metaclass)

優先 裝飾器 target {} pass get tac 搜索 items 認識python中元類的準備工作。 1,首先需要明白一個概念就是python中一切皆為對象。 input: class Trick(object): pass print type(‘1234

C++的友函數和友

pan string 拷貝構造函數 student 私有 oid 一個 each cor 友元函數可以修改類的私有屬性,寫在類的public/private/protected底下都可以。友元函數的函數體寫在類的外面時,寫法和普通函數一樣,不需要加friend關鍵字,但函數

iOS、isa詳解

exit argv tst eth program ram 通過 classname TE 類相信大家都知道是什麽,如果看過runtime的源碼或者看過相關的文章對isa肯定也不陌生,不過元類(meta class)大家可能就比較陌生了。不過大家也不要擔心,我會細細道來,讓

面向對象關於的介紹與異常處理

xxx 使用 元類 sin cor 發生 each people 信息 一、異常處理 1. 什麽是異常處理 異常是錯誤發生的信號,一旦程序出錯就會產生一個異常,如果該異常 沒有被應用程序處理,那麽該異常就會拋出來,程序的執行也隨之終止 異常包含三個部

python---django自帶分頁使用

1.基礎使用: 後臺資料獲取: from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage#錯誤判斷 List_info = [] for i in range(1000): List_info.

Python編寫ORM框架

部落格轉載: https://blog.csdn.net/givemefive_y/article/details/79806348 https://blog.csdn.net/eye_water/article/details/78777870 https://www.liaoxue

DjangoMySQL資料庫配置 | ORM模型 | 資料庫遷移操作

配置使用MySQL資料庫,按下圖操作 子應用中寫入ORM模型類 執行資料庫遷移操作:python manage.py makemigrations與python

python解讀

在多數的程式語言中,類就是一組用來描述如何生成一個物件的程式碼段,但類也是物件。只要使用關鍵詞class。python直譯器在執行時就會建立一個物件。對於一個物件·:可做的操作:賦值給一個變數,拷貝,增加屬性,作為函式引數進行傳遞等。 類也是物件,可以在執行時動態的建立。對於動態的建立類,可以使

Django 檢視詳解

在寫檢視的時候,Django除了使用函式作為檢視,也可以使用類作為檢視。使用類檢視可以使用類的一些特性,比如繼承等。 View檢視: django.views.generic.base.View是主要的類檢視,所有的類檢視都是繼承自他。如果我們寫自己的類檢視,也可以繼承自他。然後再根

Django 建立了模型在遷移時不會建立表

Django中的資料庫的使用,是支援ORM(物件關係對映)的,所以,想要對資料庫進行表的建立,就需要在Django中進行模型類的建立; 模型類建立後,需要通過資料庫的遷移命令,將模型類進行遷移後,在資料庫中建立表; # 遷移命令 python manage.py makemig