[Django]模型學習記錄篇

来源:http://www.cnblogs.com/CQ-LQJ/archive/2016/01/05/5103559.html
-Advertisement-
Play Games

模型學習記錄篇,僅僅自己學習時做的記錄!!!實現模型變更的三個步驟:修改你的模型(在models.py文件中)。運行python manage.py makemigrations ,為這些修改創建遷移文件運行python manage.py migrate ,將這些改變更新到資料庫中。模型欄位類型:...


模型學習記錄篇,僅僅自己學習時做的記錄!!!

實現模型變更的三個步驟:

模型欄位類型:

  1. AutoField自增欄位   一個IntegerField 根據實際ID自動增長.
  2. BigIntegerField   一個64位整數, 這個欄位預設的表單組件是一個TextInput.
  3. BinaryField     一個用來存儲原始二進位碼的Field.
  4. BooleanField    
  5. CharField  class CharField(max_length=None[, **options]), 存儲從小到很大各種長度的字元串的地方, 預設的表單樣式是 TextInput.
  6. CommaSeparatedIntegerField  一個逗號分隔的整數欄位。
  7. DateField   一個使用Python的datetime.date實例表示的日期.
  8. DateTimeField   通過Pythondatetime.datetime實例表示的日期和時間.
  9. DecimalField   十進位浮點數,表示python中 Decimal 的一個實例.
  10. DurationField   用作存儲一段時間的欄位類型 - When used on PostgreSQL, the data type used is an interval
  11. EmailField  that the value is a valid email address
  12. FileField  一個上傳文件的欄位

a)    FileField and FieldFile

  1. FilePathField   一個 CharField ,內容只限於文件系統內特定目錄下的文件名。
  2. FloatField   通過一個浮動實例表示Python中的浮點數。
  3. ImageField
  4. IntegerField   一個整數。從 -21474836482147483647 範圍內的值是合法的。預設的表單輸入工具是TextInput.
  5. IPAddressField
  6. GenericIPAddressField
  7. NullBooleanField
  8. PositiveIntegerField  跟IntegerField一樣,但必須是大於等於0,從0到147483647 範圍內的值是合法的。
  9. PositiveSmallIntegerField   跟PositiveIntegerField一樣,但只只允許在0到32767範圍內
  10. SlugField
  11. SmallIntegerField  跟IntegerField一樣,範圍從-32768到32767範圍內是合法的
  12. TextField   大的文本欄位,預設表單是Textarea.
  13. TimeField   時間欄位,類似於DateFieldDateTimeField
  14. URLField
  15. UUIDField

模型執行查詢

:模型執行查詢語句寫在view中函數中

基礎:

  • 每個模型都是django.db.models.Model 的一個Python 子類。
  • 模型的每個屬性都表示資料庫中的一個欄位。
  • Django 提供一套自動生成的用於資料庫訪問的API;詳見執行查詢

 

通過模型中的管理器構造一個查詢集,來從你的資料庫中獲取對象。

從SQL 的角度,查詢集SELECT 語句等價,過濾器是像WHERELIMIT 一樣的限制子句。你可以從模型的管理器那裡取得查詢集。每個模型都至少有一個管理器,它預設命名為objects。通過模型類來直接訪問它,

一般查詢集(相當於select * from LOrder):

LOrder.objects #模型管理器, 通過模型中的管理器構造一個查詢集,來從你的資料庫中獲取對象.

註: 可以在每個模型類中重命名它們。在模型中定義一個值為models.Manager()的屬性,來重命名管理器

LOrder.objects.all() #獲取一個表中所有對象,這是最簡單的方式

過濾查詢集 (相當於select * from LOrder where +條件語句):

LOrder.objects.filter(查詢參數) #獲取一個表中滿足查詢參數的對象,

例: LOrder.objects.filter(serv_id='121768152983'),意為查詢LOrder數據標識serv_id欄位下為121768152983的一行信息

LOrder.objects.exclude(查詢參數) #獲取一個表中不滿足查詢參數的對象,執行與filter相反的結果

註:瞭解上面兩種模型執行查詢方法後,可以試著鏈式查詢方式

LOrder.objects.get(查詢參數) #獲取一個表中滿足查詢參數的單一對象,

值得註意的是,使用get() 和使用filter() 的切片[0] 有一點區別。如果沒有結果滿足查詢,get() 將引發一個DoesNotExist 異常。這個異常是正在查詢的模型類的一個屬性 —— 所以在上面的代碼中,如果沒有主鍵為1 的Entry 對象,Django 將引發一個Entry.DoesNotExist

類似地,如果有多條記錄滿足get() 的查詢條件,Django 也將報錯。這種情況將引發MultipleObjectsReturned,它同樣是模型類自身的一個屬性。

限制查詢集(相當於select * from LOrder limit 10):

LOrder.objects.all()[1:10:2] #獲取一個表中1到10行且每隔2行的對象

欄位查詢集:

LOrder.objects.filter(completed_time__lte='2015-12-01') #篩選出欄位completed_time__lte小於2015-12-01的數據

LOrder.objects.filter(completed_time__gte='2015-12-01') #篩選出欄位completed_time__lte大於2015-12-01的數據

註: exclude中lte是大於,gte是小於

LOrder.objects.filter(completed_time__exact='2014-11-21 17:29:21') #exact是精確匹配

LOrder.objects.filter(completed_time__contains ='2015') # contains是模糊匹配,相當於like’%2015%’

註:iexact,和icontains是不區分大小寫,上面的區分大小寫

1: 一般來說,只有在請求查詢集的結果時才會到資料庫中去獲取它們。

2: 執行查詢函數具體參見django1.8.2官方文檔中的查詢集API參考

最後編輯於2016-01-05,此為模型部分第一次學習記錄後續繼續完善


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • //1.設置背景 //tf.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.7]; //2.設置輸入框的樣式 /* UITextBorderStyleNone, 預設樣式,無樣式 UITextBorder...
  • 前言:之前公司app在騰訊開放平臺認領應用時,涉及了一個問題:就是給空白包簽名。然後再上傳上去審核。騰訊開放平臺的官方說明如下,如何簽名:jarsgner-verbose-keystore[keystorePath]-singnedjar [apkOut] [apkln] [alias]jarsgn...
  • 前些時間空閑,寫了個簡單的小小工具類,即圖片的裁剪,動畫改變frame隱藏;本類直接提供一個類方法調用,傳入3個參數即可,代碼非常簡單,誰都可以看懂;參數說明:第一個參數:你要將裁剪後的圖片添加到哪個視圖上執行動畫,傳入當前view即可;第二個參數:傳入一張你要進行裁剪的圖片;第三個參數:背景圖,可...
  • hi剛看了唐人街探案,5星好評啊親。由於是早就約好的,也不好推辭(雖然是和男的..),但該寫的還是得擠時間寫。明天早上老師的項目結題,雖然和我關係不大,但不要添亂就好!!1、PHP一、PHP基礎(三)1.3.2 Int整型。幾個點:進位問題(2,8,16);溢出——溢出後自動轉為float型;整.....
  • 什麼是SocketSocket的概念很簡單,它是網路上運行的兩個程式間雙向通訊的一端,既可以接收請求,也可以發送請求,利用它可以較為方便地編寫網路上數據的傳遞。所以簡而言之,Socket就是進程通信的端點,Socket之間的連接過程可以分為幾步:1、伺服器監聽伺服器端Socket並不定位具體的客戶端...
  • 本章節主要說明Python的運算符。Python算術運算符以下假設變數a為10,變數b為20:Python比較運算符 以下假設變數a為10,變數b為20:Python賦值運算符 以下假設變數a為10,變數b為20:Python位運算符 按位運算符是把數字看作二進位來進行計算的。Python中的按位運...
  • /********************************************************** 作者: 劉家 時間:2015年12月24日02:44:48 編譯器:dev ****************************************************...
  • 1、switch語句使用的變數只能是byte、char、short、string數據類型。2、case後面gender數據必須是一個常量。3、switch的停止條件: switch語句一旦比配上了其他的一個case語句,那麼就會執行對應的case中的語句代碼,執行完畢之後如果沒有讀到break關鍵自...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...