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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[Django]模型学习记录篇--基础

發布時間:2025/3/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Django]模型学习记录篇--基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

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

  • 修改你的模型(在models.py文件中)。
  • 運行python manage.py makemigrations ,為這些修改創建遷移文件
  • 運行python manage.py migrate ,將這些改變更新到數據庫中。

模型字段類型:

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

  • FilePathField ??一個?CharField ,內容只限于文件系統內特定目錄下的文件名。
  • FloatField ??通過一個浮動實例表示Python中的浮點數。
  • ImageField
  • IntegerField ??一個整數。從 -21474836482147483647 范圍內的值是合法的。默認的表單輸入工具是TextInput.
  • IPAddressField
  • GenericIPAddressField
  • NullBooleanField
  • PositiveIntegerField ?跟IntegerField一樣,但必須是大于等于0,從0到147483647 范圍內的值是合法的。
  • PositiveSmallIntegerField ??跟PositiveIntegerField一樣,但只只允許在0到32767范圍內
  • SlugField
  • SmallIntegerField ?跟IntegerField一樣,范圍從-32768到32767范圍內是合法的
  • TextField ??大的文本字段,默認表單是Textarea.
  • TimeField ??時間字段,類似于DateField和DateTimeField
  • URLField
  • 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,此為模型部分第一次學習記錄后續繼續完善

    轉載于:https://www.cnblogs.com/CQ-LQJ/p/5103559.html

    總結

    以上是生活随笔為你收集整理的[Django]模型学习记录篇--基础的全部內容,希望文章能夠幫你解決所遇到的問題。

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