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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django模型的字段类型和关系

發布時間:2023/12/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django模型的字段类型和关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://cc.ecjtu.net/posts/django-model-Field

后來發現實際來源:http://wrongwaycn.github.com/django11/ref/models/fields/

?Django model ? 字段類型:

AutoField
一個?IntegerField, 添加記錄時它會自動增長. 你通常不需要直接使用這個字段; 如果你不指定主鍵的話,系統會自動添加一個主鍵字段到你的 model.(參閱 _自動主鍵字段)
BooleanField
A true/false field. admin 用 checkbox 來表示此類字段.
CharField

字符串字段, 用于較短的字符串.

如果要保存大量文本, 使用?TextField.

admin 用一個?<input?type="text">?來表示此類字段 (單行輸入).

CharField?要求必須有一個參數?maxlength, 用于從數據庫層和Django校驗層限制該字段所允許的最大字符數.

CommaSeparatedIntegerField
用于存放逗號分隔的整數值. 類似?CharField, 必須要有?maxlength?參數.
DateField

一個日期字段. 共有下列額外的可選參數:

Argument描述
auto_now當對象被保存時,自動將該字段的值設置為當前時間.通常用于表示 "last-modified" 時間戳.
auto_now_add當對象首次被創建時,自動將該字段的值設置為當前時間.通常用于表示對象創建時間.

admin 用一個文本框?<input?type="text">?來表示該字段數據(附帶一個 JavaScript 日歷和一個"Today"快鍵.

DateTimeField
一個日期時間字段. 類似?DateField?支持同樣的附加選項.

admin 用兩上文本框?<input?type="text">?表示該字段順序(附帶JavaScript shortcuts).?

EmailField
一個帶有檢查 Email 合法性的?CharField,不接受?maxlength?參數.
FileField

一個文件上傳字段.

要求一個必須有的參數:?upload_to, 一個用于保存上載文件的本地文件系統路徑. 這個路徑必須包含?strftime formatting, 該格式將被上載文件的 date/time 替換(so that uploaded files don't fill up the given directory).

admin 用一個``<input type="file">``部件表示該字段保存的數據(一個文件上傳部件) .

在一個 model 中使用?FileField?或?ImageField?需要以下步驟:

  • 在你的 settings 文件中, 定義一個完整路徑給?MEDIA_ROOT?以便讓 Django在此處保存上傳文件. (出于性能考慮,這些文件并不保存到數據庫.) 定義?MEDIA_URL?作為該目錄的公共 URL. 要確保該目錄對 WEB 服務器用戶帳號是可寫的.
  • 在你的 model 中添加?FileField?或?ImageField, 并確保定義了?upload_to?選項,以告訴 Django 使用?MEDIA_ROOT?的哪個子目錄保存上傳文件.
  • 你的數據庫中要保存的只是文件的路徑(相對于?MEDIA_ROOT). 出于習慣你一定很想使用 Django 提供的?get_<fieldname>_url?函數.舉例來說,如果你的?ImageField?叫作?mug_shot, 你就可以在模板中以?{{?object.get_mug_shot_url?}}?這樣的方式得到圖像的絕對路徑.
  • FilePathField

    可選項目為某個特定目錄下的文件名. 支持三個特殊的參數, 其中第一個是必須提供的.

    參數描述
    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

    FloatField

    一個浮點數. 必須?提供兩個?參數:

    參數描述
    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">)表示該字段保存的數據.

    ImageField

    類似?FileField, 不過要校驗上傳對象是否是一個合法圖片.它有兩個可選參數:height_field?和?width_field,如果提供這兩個參數,則圖片將按提供的高度和寬度規格保存.

    該字段要求?Python Imaging Library.

    IntegerField

    用于保存一個整數.

    admin 用一個``<input type="text">``表示該字段保存的數據(一個單行編輯框)

    IPAddressField

    一個字符串形式的 IP 地址, (i.e. "24.124.1.30").

    admin 用一個``<input type="text">``表示該字段保存的數據(一個單行編輯框)

    NullBooleanField

    類似?BooleanField, 不過允許?NULL?作為其中一個選項. 推薦使用這個字段而不要用?BooleanField?加?null=True?選項.

    admin 用一個選擇框?<select>?(三個可選擇的值: "Unknown", "Yes" 和 "No" ) 來表示這種字段數據.

    PhoneNumberField
    一個帶有合法美國風格電話號碼校驗的?CharField``(格式:?``XXX-XXX-XXXX).
    PositiveIntegerField
    類似?IntegerField, 但取值范圍為非負整數(這個字段應該是允許0值的....所以字段名字取得不太好,無符號整數就對了嘛).
    PositiveSmallIntegerField
    類似?PositiveIntegerField, 取值范圍較小(數據庫相關)
    SlugField

    "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?字段數據(一個單行編輯框)?

    SmallIntegerField
    類似?IntegerField, 不過只允許某個取值范圍內的整數.(依賴數據庫)
    TextField

    一個容量很大的文本字段.

    admin 用一個?<textarea>?(文本區域)表示該字段數據.(一個多行編輯框).

    TimeField

    A time. Accepts the same auto-population options as?DateField?和?DateTimeField.

    admin 用一個?<input?type="text">?文本框表示該字段保存的數據(附加一些JavaScript shortcuts).

    URLField

    用于保存 URL. 若?verify_exists?參數為?True?(默認), 給定的 URL 會預先檢查是否存在(即URL是否被有效裝入且沒有返回404響應).

    admin 用一個?<input?type="text">?文本框表示該字段保存的數據(一個單行編輯框)

    USStateField

    一個兩字母的美國州名縮寫.

    admin 用一個?<input?type="text">?文本框表示該字段保存的數據(一個單行編輯框)

    XMLField

    一個校驗值是否為合法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模型的字段类型和关系的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。