Django models 經常使用數據類型


CharField
class CharField(max_length=None[, **options])

# 字符串(存儲從小到大各類長度)
# 若是是巨大的文本類型,能夠用 TextField,該字段默認的表單樣式是 TextInput,CharField 必須接收一個額外的參數: max_length,在數據庫層和 Django 表單驗證中起做用, 用來限定字段的長度
IntegerField
class IntegerField([**options])

# 整數(-2147483648 到 2147483648)
# 默認的表單輸入工具是TextInput
FloatField
class FloatField([**options])

# 浮點數
# max_digits 總位數(不包括小數點和符號)
# decimal_places 小數位數
# 舉例, 要保存最大值爲 999 (小數點後保存2位),你要這樣定義字段:
# models.FloatField(..., max_digits=5, decimal_places=2)
AutoField
class AutoField(**options)

# 根據實際 ID 自動增加的 IntegerField
# 添加記錄時它會自動增加,你一般不須要直接使用這個字段
# 自定義一個主鍵:my_id=models.AutoField(primary_key=True),若是你不指定主鍵的話,系統會自動添加一個主鍵字段到你的 model.
BooleanField
class BooleanField(**options)

# true/false
# 此字段的默認表單掛件是一個 CheckboxInput,若是你須要設置 null 值,則使用 NullBooleanField 來代替 BooleanField。若是Field.default沒有指定的話, BooleanField 的默認值是 None。
TextField
class TextField([**options])

# 大文本字段
# 該模型默認的表單組件是 Textarea
EmailField
class EmailField([max_length=254, **options])

# 帶有檢查 Email 合法性的 CharField
# 它使用 EmailValidator 來驗證輸入合法性
DateField
class DateField([auto_now=False, auto_now_add=False, **options])

# 日期字段
# Argument 描述
# auto_now 當對象被保存時,自動將該字段的值設置爲當前時間,一般用於表示 "last-modified" 時間戳
# auto_now_add 當對象首次被建立時,自動將該字段的值設置爲當前時間,一般用於表示對象建立時間
DateTimeField
class DateTimeField([auto_now=False, auto_now_add=False, **options])

# 日期時間字段
# 相似 DateField 支持一樣的附加選項
ImageField
class ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])

# 相似 FileField, 不過要校驗上傳對象是不是一個合法圖片
# 它有兩個可選參數:height_field 和 width_field,若是提供這兩個參數,則圖片將按提供的高度和寬度規格保存 
FileField
class FileField([upload_to=None, max_length=100, **options])

# 上傳文件的字段
# 字段不支持 primary_key 和 unique 參數,若是使用會生成 TypeError 錯誤,在舊版本 Django 中,upload_to 屬性是必須的
URLField
class URLField([max_length=200, **options])

# CharField 類型的 URL
# 若 verify_exists 參數爲 True (默認), 給定的 URL 會預先檢查是否存在( 即URL是否被有效裝入且沒有返回404響應)
SlugField
class SlugField([max_length=50, **options])

# 短標題
# 一個 slug 只能包含字母、數字、下劃線或者是連字符,一般用來做爲短標籤,一般它們是用來放在URL裏的。與 CharField 相似, 你能夠指定max_length 的值,若是沒有指定 max_length, Django 將會默認長度爲 50
FilePathField
class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])

# 一個 CharField ,內容只限於文件系統內特定目錄下的文件名
# 參數, 其中第一個是必需的:
# path 必填。這個 FilePathField 應該獲得其選擇的目錄的絕對文件系統路徑。例如: "/home/images"
# match 可選,match 只匹配基本文件名(base filename), 而不是整個文件路徑(full path)
# recursive 可選,True/False,默認 False
# allow_files 可選,True/False,默認 False
# allow_folders 可選,True/False,默認 False
GenericIPAddressField
class GenericIPAddressField([protocol=both, unpack_ipv4=False, **options])

# IPv4 或 IPv6 地址, 字符串格式 (例如 192.0.2.30 或 2a02:42fe::4)
# 默認表單小部件是一個 TextInput
CommaSeparatedIntegerField
class CommaSeparatedIntegerField(max_length=None[, **options])

# 逗號分隔的整數字段
# 像 CharField 同樣,須要一個 max_length 參數,同時數據庫移植時也須要注意
BigIntegerField
class BigIntegerField([**options])

# 64 位整數
# 相似於一個 IntegerField,它的值的範圍是 -9223372036854775808 到9223372036854775807 之間, 這個字段默認的表單組件是一個 TextInput
BinaryField
class BinaryField([**options])

# 存儲原始二進制碼
# 只支持 bytes 賦值,注意這個 Field 只有頗有限的功能
PositiveIntegerField
class PositiveIntegerField([**options])

# 相似 IntegerField, 但值必須是正數或者零(0)
UUIDField
class UUIDField([**options])

# 存儲 UUID
# 使用 Python 的 UUID 類。當使用 PostgreSQL 數據庫時,該字段類型對應的數據庫中的數據類型是 uuid,使用其餘數據庫時,數據庫對應的是char(32) 類型。使用 UUID 類型相對於使用具備 primary_key 參數的AutoField 類型是一個更好的解決方案。 數據庫不會自動生成 UUID,因此推薦使用 default 參數:
import uuid
from django.db import models
class MyUUIDModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
 


參考文章:
1. http://www.javashuo.com/article/p-mslvrebs-eu.html
2. https://my.oschina.net/liuyuantao/blog/751343
相關文章
相關標籤/搜索