django模型的字段类型和关系
轉自:http://cc.ecjtu.net/posts/django-model-Field
后來發現實際來源:http://wrongwaycn.github.com/django11/ref/models/fields/
?Django model ? 字段類型:
AutoField字符串字段, 用于較短的字符串.
如果要保存大量文本, 使用?TextField.
admin 用一個?<input?type="text">?來表示此類字段 (單行輸入).
CharField?要求必須有一個參數?maxlength, 用于從數據庫層和Django校驗層限制該字段所允許的最大字符數.
一個日期字段. 共有下列額外的可選參數:
| auto_now | 當對象被保存時,自動將該字段的值設置為當前時間.通常用于表示 "last-modified" 時間戳. |
| auto_now_add | 當對象首次被創建時,自動將該字段的值設置為當前時間.通常用于表示對象創建時間. |
admin 用一個文本框?<input?type="text">?來表示該字段數據(附帶一個 JavaScript 日歷和一個"Today"快鍵.
admin 用兩上文本框?<input?type="text">?表示該字段順序(附帶JavaScript shortcuts).?
一個文件上傳字段.
要求一個必須有的參數:?upload_to, 一個用于保存上載文件的本地文件系統路徑. 這個路徑必須包含?strftime formatting, 該格式將被上載文件的 date/time 替換(so that uploaded files don't fill up the given directory).
admin 用一個``<input type="file">``部件表示該字段保存的數據(一個文件上傳部件) .
在一個 model 中使用?FileField?或?ImageField?需要以下步驟:
可選項目為某個特定目錄下的文件名. 支持三個特殊的參數, 其中第一個是必須提供的.
| path | 必需參數. 一個目錄的絕對文件系統路徑.?FilePathField?據此得到可選項目. Example:?"/home/p_w_picpaths". |
| match | 可選參數. 一個正則表達式, 作為一個字符串,?FilePathField?將使用它過濾文件名. 注意這個正則表達式只會應用到 base filename 而不是路徑全名. Example:?"foo.*\.txt^", 將匹配文件?foo23.txt?卻不匹配?bar.txt?或?foo23.gif. |
| recursive | 可選參數.要么?True?要么?False. 默認值是?False. 是否包括?path?下面的全部子目錄. |
這三個參數可以同時使用.
我已經告訴過你?match?僅應用于 base filename, 而不是路徑全名. 那么,這個例子:
FilePathField(path="/home/p_w_picpaths", match="foo.*", recursive=True)...會匹配?/home/p_w_picpaths/foo.gif?而不匹配?/home/p_w_picpaths/foo/bar.gif
一個浮點數. 必須?提供兩個?參數:
| max_digits | 總位數(不包括小數點和符號) |
| decimal_places | 小數位數 |
舉例來說, 要保存最大值為 999 (小數點后保存2位),你要這樣定義字段:
models.FloatField(..., max_digits=5, decimal_places=2)要保存最大值一百萬(小數點后保存10位)的話,你要這樣定義:
models.FloatField(..., max_digits=19, decimal_places=10)admin 用一個文本框(<input?type="text">)表示該字段保存的數據.
類似?FileField, 不過要校驗上傳對象是否是一個合法圖片.它有兩個可選參數:height_field?和?width_field,如果提供這兩個參數,則圖片將按提供的高度和寬度規格保存.
該字段要求?Python Imaging Library.
用于保存一個整數.
admin 用一個``<input type="text">``表示該字段保存的數據(一個單行編輯框)
一個字符串形式的 IP 地址, (i.e. "24.124.1.30").
admin 用一個``<input type="text">``表示該字段保存的數據(一個單行編輯框)
類似?BooleanField, 不過允許?NULL?作為其中一個選項. 推薦使用這個字段而不要用?BooleanField?加?null=True?選項.
admin 用一個選擇框?<select>?(三個可選擇的值: "Unknown", "Yes" 和 "No" ) 來表示這種字段數據.
"Slug" 是一個報紙術語. slug 是某個東西的小小標記(短簽), 只包含字母,數字,下劃線和連字符.它們通常用于URLs.
若你使用 Django 開發版本,你可以指定?maxlength. 若?maxlength?未指定, Django 會使用默認長度: 50. 在以前的 Django 版本,沒有任何辦法改變 50 這個長度.
這暗示了?db_index=True.
它接受一個額外的參數:?prepopulate_from, which is a list of fields from which to auto-populate the slug, via JavaScript, in the object's admin form:
models.SlugField(prepopulate_from=("pre_name", "name"))prepopulate_from?不接受 DateTimeFields.
admin 用一個``<input type="text">``表示?SlugField?字段數據(一個單行編輯框)?
一個容量很大的文本字段.
admin 用一個?<textarea>?(文本區域)表示該字段數據.(一個多行編輯框).
A time. Accepts the same auto-population options as?DateField?和?DateTimeField.
admin 用一個?<input?type="text">?文本框表示該字段保存的數據(附加一些JavaScript shortcuts).
用于保存 URL. 若?verify_exists?參數為?True?(默認), 給定的 URL 會預先檢查是否存在(即URL是否被有效裝入且沒有返回404響應).
admin 用一個?<input?type="text">?文本框表示該字段保存的數據(一個單行編輯框)
一個兩字母的美國州名縮寫.
admin 用一個?<input?type="text">?文本框表示該字段保存的數據(一個單行編輯框)
一個校驗值是否為合法XML的?TextField,必須提供參數:?schema_path, 它是一個用來校驗文本的?RelaxNG?schema 的文件系統路徑.
Django 提供了定義最常見的三種數據庫關系:多對一、多對多和一對一。
多對一 關系
定義多對一關系,使用 ForeignKey。就像其他字段一樣,在模型中以類屬性的形式包含它即可。
ForeignKey 需要一個參數:所屬的模型名稱。
比如,一個制造商生產了多輛汽車。
class Manufacturer(models.Model): ? ? # ...class Car(models.Model): ? ? manufacturer = models.ForeignKey(Manufacturer) ? ? # ...……
多對多 關系
定義多對多關系,使用 ManyToManyField。
比如,一個 Pizza 有多種配料 Topping,而每種配料也可以用在多個 Pizza 上。
class Topping(models.Model): ? ? # ...class Pizza(models.Model): ? ? # ... ? ? toppings = models.ManyToManyField(Topping)無論哪個模型包含 ManyToManyField,結果都一樣;但只能有一個。
轉載于:https://blog.51cto.com/xuewei/1110608
總結
以上是生活随笔為你收集整理的django模型的字段类型和关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘特持续加码淘工厂,联动1688大幅增加
- 下一篇: 哪种动作会让膝盖承受的压力更大?蚂蚁庄园