Django模型類(lèi)的屬性與關(guān)系

在django中, 所有的數(shù)據(jù)庫(kù)操作都是面向?qū)ο缶幊?,基本上看不到操作?shù)據(jù)庫(kù)的sql語(yǔ)句,方便快捷是django開(kāi)發(fā)的一大特點(diǎn)

定義屬性

  • 定義屬性需要字段類(lèi)型
  • 字段類(lèi)型被定義在django.db.models.fields目錄下,為了方便使用,被導(dǎo)入到django.db.models中
  • 使用方式:
    1.導(dǎo)入 from django.db import models
    2.通過(guò)models.Field創(chuàng)建字段類(lèi)型的對(duì)象,賦值給屬性

字段類(lèi)型

  • AutoFiled :根據(jù)實(shí)際id自動(dòng)增長(zhǎng)的字段類(lèi)型。如果不指定該類(lèi)型,則自動(dòng)添加一個(gè)主鍵字段到模型類(lèi)中
  • BooleanFiled:類(lèi)似于c/c++等其他語(yǔ)言中的bool類(lèi)型,只能為true或false
  • NullBooleanFiled:它可以有三個(gè)取值, null、true、false
  • CharField:字符串
  • TextField :大文本字段,一般超過(guò)4000行
  • IntegerFiled:整數(shù)字段
  • DecimalFiled(max_digits=None,decimal_place=None)
    max_digits:位數(shù)總數(shù)
    decimal_place:小數(shù)點(diǎn)后面的位數(shù)
  • FloatField:python實(shí)例表示的浮點(diǎn)數(shù)
  • DateFiled(auto_now = false, auto_now_add = false):使用python中的datetime.date實(shí)例表示的日期
    auto_now:默認(rèn)為false, 每次保存對(duì)象時(shí), 自動(dòng)設(shè)置該字段為當(dāng)前時(shí)間。用于最后一次修改的“時(shí)間戳”
    auto_now_add:當(dāng)對(duì)象第一次被創(chuàng)建時(shí)自動(dòng)設(shè)置當(dāng)前時(shí)間,用于創(chuàng)建時(shí)間戳,它總是使用當(dāng)前時(shí)間,默認(rèn)為false
    auto_now、auto_now_add 和默認(rèn)值之間是互斥的,它們之間任意組合將發(fā)生錯(cuò)誤
  • TimeField:使用python的datetime.time實(shí)例表示的時(shí)間,參數(shù)同DateFiled
  • DateTimeField:使用python的datetime。datetime實(shí)例表示的時(shí)間,參數(shù)同DateFiled
  • FileFiled:上傳文件的字段
  • ImageFiled:繼承了FileFiled的所有屬性和方法, 但對(duì)上傳的文件進(jìn)行校驗(yàn),確保它是個(gè)有效的image文件

字段選項(xiàng)

  • 通過(guò)字段選項(xiàng)可以實(shí)現(xiàn)對(duì)字段的約束
  • 在字段對(duì)象中通過(guò)關(guān)鍵字參數(shù)指定
  • null:如果為true, django將控制以null存儲(chǔ)到數(shù)據(jù)庫(kù)中,默認(rèn)為false(null是數(shù)據(jù)庫(kù)的概念
  • blank:如果為true, 表示該字段允許為空白,默認(rèn)為false(blank是表單驗(yàn)證范疇
  • db_column:字段的名稱(chēng) ,如果未指定,則使用屬性的名稱(chēng)
  • db_index:如果為true, 則在表中會(huì)為該字段常見(jiàn)索引
  • default:默認(rèn)值
  • primary_key:如果為true, 則該字段為成為該表的主鍵
  • unique:如果為true, 則該字段在表中必須有唯一值

關(guān)系

  • 關(guān)系的類(lèi)型包括:
    ForeignKey: 外鍵, 一對(duì)多, 將字段定義在多的那一邊
    ManyToManyField:多對(duì)多,將字段定義在兩端中
    OneToOneField:一對(duì)一,將字段定義在任意一端中
  • 用一訪問(wèn)多:
    bookinfo.heroinfo_set
  • 用一訪問(wèn)一:
    heroinfo.bookinfo
  • 訪問(wèn)id:對(duì)象.屬性_id
    heroinfo.bok_id
  • 示例
class BookInfo(models.Model):
         htitle = models.CharFiled(max_length = 20)
         bread = models. IntegerFiled()
         isDelete = models.BooleanField()

class HeroInfo(mdels.Model):
          hname = models.CharField(max_length = 20)
          hgender = models.BooleanField()
          isDelete = models.BooleanField()
          book = models.ForeignKey('BookInfo')

元選項(xiàng)

  • 在模型類(lèi)中定義Meat,用于定義元信息
  • 元信息db_table, 用于定義數(shù)據(jù)表的默認(rèn)名稱(chēng), 推薦使用小寫(xiě)字母, 數(shù)據(jù)表的默認(rèn)名稱(chēng)
    <app_name><model_name>
  • ordering: 對(duì)象的默認(rèn)排序選字段
 class Man(models.Model):
       class Meta:
               ordering = ['id']
  • 字符串前面加-表倒敘
class BookInfo(models.Model):
          class Meta:
                    ordering = ['-id']
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,648評(píng)論 19 139
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查詢集API 參...
    陽(yáng)光小鎮(zhèn)少爺閱讀 3,963評(píng)論 0 8
  • 前言 根據(jù)前幾篇文章的分享已經(jīng)了解djangoWeb開(kāi)發(fā)一般步驟為:創(chuàng)建虛擬環(huán)境安裝django創(chuàng)建項(xiàng)目創(chuàng)建應(yīng)用在...
    博行天下閱讀 1,202評(píng)論 0 2
  • Django 1.8.2 文檔Home | Table of contents | Index | Modules...
    軒轅小愛(ài)閱讀 2,425評(píng)論 0 2
  • 今日“愚人節(jié)”,大家早安。當(dāng)智慧的評(píng)論家,路遇歌德時(shí),便不屑一顧地道:“我是從來(lái)不給愚蠢的人讓路的!”詩(shī)人歌德聽(tīng)后...
    筏喻微集閱讀 610評(píng)論 1 1

友情鏈接更多精彩內(nèi)容