Django中模型類 屬性-學習筆記

定義屬性

Django根據屬性的類型確定以下信息:

  • 當前選擇的數據庫支持字段的類型
  • 渲染管理表單時使用的默認html控件
  • 在管理站點最低限度的驗證

django會為表創建自動增長的主鍵列,每個模型只能有一個主鍵列,如果使用選項設置某屬性為主鍵列后django不會再創建自動增長的主鍵列。

默認創建的主鍵列屬性為id,可以使用pk代替,pk全拼為primary key。

注意:pk是主鍵的別名,若主鍵名為id2,那么pk是id2的別名。

屬性命名限制:

  • 不能是python的保留關鍵字。
  • 不允許使用連續的下劃線,這是由django的查詢方式決定的,在第4節會詳細講解查詢。
  • 定義屬性時需要指定字段類型,通過字段類型的參數指定選項,語法如下:
屬性=models.字段類型(選項)

字段類型

使用時需要引入django.db.models包,字段類型如下:

  • AutoField:自動增長的IntegerField,通常不用指定,不指定時Django會自動創建屬性名為id的自動增長屬性。
  • BooleanField:布爾字段,值為True或False。
  • NullBooleanField:支持Null、True、False三種值。
  • CharField(max_length=字符長度):字符串。
    • 參數max_length表示最大字符個數。
  • TextField:大文本字段,一般超過4000個字符時使用。
  • IntegerField:整數。
  • DecimalField(max_digits=None, decimal_places=None):十進制浮點數。
    • 參數max_digits表示總位數。
    • 參數decimal_places表示小數位數。
  • FloatField:浮點數。
  • DateField[auto_now=False, auto_now_add=False]):日期。
    • 參數auto_now表示每次保存對象時,自動設置該字段為當前時間,用于"最后一次修改"的時間戳,它總是使用當前日期,默認為false。
    • 參數auto_now_add表示當對象第一次被創建時自動設置當前時間,用于創建的時間戳,它總是使用當前日期,默認為false。
    • 參數auto_now_add和auto_now是相互排斥的,組合將會發生錯誤。
  • TimeField:時間,參數同DateField。
  • DateTimeField:日期時間,參數同DateField。
  • FileField:上傳文件字段。
  • ImageField:繼承于FileField,對上傳的內容進行校驗,確保是有效的圖片。

選項

通過選項實現對字段的約束,選項如下:

  • null:如果為True,表示允許為空,默認值是False。
  • blank:如果為True,則該字段允許為空白,默認值是False。
  • 對比:null是數據庫范疇的概念,blank是表單驗證范疇的
  • db_column:字段的名稱,如果未指定,則使用屬性的名稱。
  • db_index:若值為True, 則在表中會為此字段創建索引,默認值是False。
  • default:默認值。
  • primary_key:若為True,則該字段會成為模型的主鍵字段,默認值是False,一般作為AutoField的選項使用。
  • unique:如果為True, 這個字段在表中必須有唯一值,默認值是False。

綜合演示

修改booktest/models.py中的模型類,代碼如下:

from django.db import models#定義圖書模型類BookInfo
class BookInfo(models.Model):#btitle = models.CharField(max_length=20)#圖書名稱btitle = models.CharField(max_length=20, db_column='title')#通過db_column指定btitle對應表格中字段的名字為titlebpub_date = models.DateField()#發布日期bread = models.IntegerField(default=0)#閱讀量bcomment = models.IntegerField(default=0)#評論量isDelete = models.BooleanField(default=False)#邏輯刪除#定義英雄模型類HeroInfo
class HeroInfo(models.Model):hname = models.CharField(max_length=20)#英雄姓名hgender = models.BooleanField(default=True)#英雄性別isDelete = models.BooleanField(default=False)#邏輯刪除#hcomment = models.CharField(max_length=200)#英雄描述信息hcomment = models.CharField(max_length=200, null=True, blank=False) #hcomment對應的數據庫中的字段可以為空,但通過后臺管理頁面添加英雄信息時hcomment對應的輸入框不能為空hbook = models.ForeignKey('BookInfo')#英雄與圖書表的關系為一對多,所以屬性定義在英雄模型類中

然后生成遷移文件并執行遷移命令,最后查看test2數據庫中的內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/456704.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/456704.shtml
英文地址,請注明出處:http://en.pswp.cn/news/456704.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Angular Redux

Angular Redux 轉載于:https://www.cnblogs.com/skating/p/6185878.html

AtomicInteger相關類

在java6以后我們不但接觸到了Lock相關的鎖,也接觸到了很多更加樂觀的原子修改操作,也就是在修改時我們只需要保證它的那個瞬間是安全的即可,經過相應的包裝后可以再處理對象的并發修改,以及并發中的ABA問題,本文講述At…

Storm入門簡介

目錄前言:1、Storm簡介2、Storm與Hadoop的區別3、Storm核心組件4、Storm編程模型5、流式計算一般架構圖(重要)總結: 目錄 前言: 在介紹Storm之前,先介紹下離線計算。 離線計算:批量獲取數據…

項目完成

完成示例項目 現在還需要的代碼包括三個方面,三個方面順序不分先后。 1.定義視圖2.定義URLconf3.定義模板 定義視圖 編寫booktest/views.py文件如下: from django.shortcuts import render from booktest.models import BookInfo#首頁,展…

前端模板預編譯技術

什么是前端模板預編譯 前端模板預編譯通過預編譯技術讓前端模板突破瀏覽器限制,實現后端模板一樣的同步“文件”加載能力。它采用目錄來組織維護前端模板,從而讓前端模板實現工程化管理,最終保證前端模板在復雜單頁 web 應用下的可維護性。同…

Python如何生成windows可執行的exe文件

打包工具 pyinstaller 安裝pyinstaller 如果你的網絡穩定,通常直接使用下面的命令安裝即可: pip install pyinstaller 當然了,你也可以下載pyinstaller源碼包,然后進入包目錄執行下面的命令,同樣可以安裝&#xff…

招商銀行信用卡中心華泰證券暑期實習軟開筆試小結

白菜自動化小碩一枚,18屆,下學期就正式要找工作了,沒有實習經驗,感覺心慌慌。現在學校里已經開始各種提前招實習,內推了,so暑假想提前試試水,投一投暑期實習。 看到心水的單位就投一投&#xff…

理想的程序猿

出處 | http://guoze.me 最近看到的一篇不錯的文章,分享一下。 我算是靠坑蒙拐騙進了程序員的門,然后一路狂奔。26歲之前幾乎沒有任何寫代碼的經驗,研究生畢業卻意外選擇了一家不可能提供培訓的初創公司,在每日擔憂公司倒閉、害…

node08-express

目錄:node01-創建服務器 node02-util node03-events node04-buffer node05-fs node06-path node07-http node08-express node09-cookie express模塊: 1 /*2 * express是一個應用框架3 * 1、路由4 * 2、中間件5 * 3、模板引擎6 * */7 8 var express requ…

【python】1. 兩數之和

給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。 示例: 給定 nums [2, 7, 11, 15], t…

The user specified as a definer (#39;root#39;@#39;%#39;) does not exist

通常是因為root用戶對全局host無訪問權限。因此僅僅要給root用戶加入一個訪問權限就可以。解決的方法: 登陸mysql 。運行 mysql -u root -pPasswd mysql >grant all privileges on *.* to root"%" identified by "Passwd…

Java基礎常見筆試題總結

以下是自己總結的一些Java常見的基礎知識題,答案僅供參考,如有異議請指出。一直保持更新狀態。 1.什么是Java虛擬機?為什么Java被稱作是“平臺無關的編程語言”? Java虛擬機是一個可以執行Java字節碼的虛擬機進程。Java源文件被編…

ThreadLocal的練習代碼

場景: 有三個小孩兒,買了一個變形金剛玩具(Transformer).... 三個小孩都爭著玩這個玩具....沒有一個人可以玩... 第一種方式:每個人各玩一會.... 第二種方式:再買兩個玩具,一個人玩一個. 每個小孩都當成一個線程.三個小孩就有三個線程. Child.java 2 3 import java.util.Random…

nginx+uwsgi部署Django

本篇文章主要介紹了解決nginxuwsgi部署Django的所有問題(小結),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧 最近,自己暑假寫的小項目也算完畢了,想著投放到自己云服務器上&#xff0…

$(document).scrollTop()與$(window).scrollTop()

$(document).scrollTop() 獲取垂直滾動的距離 即當前滾動的地方的窗口頂端到整個頁面頂端的距離 要獲取頂端 只需要獲取到scrollTop()0的時候 就是頂端了 要獲取底端 只要獲取$(document).scrollTop()>(document).height()?(window).height() 就可以知道已經…

各種機器學習開源項目精選TOP30

8800個機器學習開源項目為你精選TOP30! 授權自AI科技大本營(ID: rgznai100) 本文共圖文結合,建議閱讀5分鐘。 本文為大家帶來了30個廣受好評的機器學習開源項目。 最近,Mybridge發布了一篇文章,對比了過去一年中機…

Python中is與==的使用區別詳解

>>> a 1000 >>> b 1000 >>> print(id(a),id(b)) 2689566689904 2689566688880 >>> a ,b 1000,1000 >>> print(id(a),id(b)) 2689566689968 2689566689968 一行執行的用一個id地址 分行執行用兩個地址

解決:Please specify a different SDK name--PyCharm報錯

這個問題出現的原因是因為PyCharm中存在相同名字的虛擬環境變量。 本人的出錯原因是,一直使用PyCharm的默認設置來建立工程,所以每個工程都建立了自己獨立的虛擬環境。 我個人刪除了一些工程后,又建立相同名字的工程。所以才會出現存在相同…

Tomcat控制臺輸出到文件

為什么80%的碼農都做不了架構師?>>> 修改startup.bat call "%EXECUTABLE%" start %CMD_LINE_ARGS% 為 call "%EXECUTABLE%" run %CMD_LINE_ARGS% >> ..\logs\test.log 轉載于:https://my.oschina.net/cccyb/blog/886047

常見算法詳解(原理及代碼實現Python版本)

文章目錄前言1、冒泡排序2、選擇排序3、插入排序4、希爾排序5、快速排序6、歸并排序7、二分法查找總結前言 最近復習了下常見的算法,在這里手動再寫一遍,權當加深自己的印象。代碼實現用的是python3.6版本。 1、冒泡排序 原理: 冒泡排序&a…