葉覺的Django之旅【06-常用查詢、字段、參數】

前言:這一部分是關於05,查詢方法的補充,主要內容爲django的常用查詢介紹以及字段參數的使用介紹。如需查詢如何使用,請翻到《葉覺的Django之旅05》

常用查詢方法

  • 前一章用到的查詢方法一覽
def select(request):
    # 查詢所有
    rs = User.objects.all()
    # 查詢單個對象
    rs = User.objects.get(id=1)
    # 查詢滿足條件的對象
    rs = User.objects.filter(name='小明')
  • 補充的查詢
    • order_by,傳入需要排序的字段,可以傳入多個,以從左到右確認排序優先度,在傳入字段加入 “-” 號,爲反向排序。
    • __exact 在 sql 層面相當於 “=”,如 “where name=‘yejue’ "。
    • __iexact 在 sql 層面相當於 “like”,如 like “yejue”。
    • __in,在 sql 層面相當於 “in”,即in查詢可查詢包含在in內的所有符合條件數據。
    • __range,一個數字區間,對於range來說,如range(10, 20),兩邊都是閉區間即數學表達{x|10<= x <= 20}
# 查詢第一條數據
rs = User.objects.first()
# 查詢最後一條數據
rs = User.objects.last()
# 排除查詢,查詢不滿足條件的數據
rs = User.objects.exclude(name='小紅')
# 查詢排序
rs = User.objects.order_by('-id')
# 查詢結果數據轉化爲字典
rs = User.objects.all().values()
# 查詢結果計數
rs = User.objects.all().count()
# 條件查詢
# exact 和 iexact
rs = User.objects.filter(name__exact='yejue')
rs = User.objects.filter(name__iexact='yejue')
# 以...開頭,以...結尾
rs = User.objects.filter(name__startswith='小')
rs = User.objects.filter(name__endswith='明')
# 成員所屬,in 查詢
rs = User.objects.filter(name__in=['小明', '小紅'])
# range 數字區間查詢
rs = User.objects.filter(id__range=(12, 17))
# 大於 > ,大於等於 >= , 小於<, 小於等於 <=
rs = User.objects.filter(id__lt=15)   # 小於15
rs = User.objects.filter(id__lte=15)   # 小於等於15
rs = User.objects.filter(id__gt=15)   # 大於15
rs = User.objects.filter(id__gte=15)   # 大於等於15
  • 在django中使用 or 查詢
# 使用or條件查詢
from django.db.models import Q
rs = User.objects.filter(Q(name='小明') | Q(id=15))

常用的字段類型

字段類型 介紹
IntegerField 整型,對應 int
CharField 字符型,對應 varchar,需指定最大長度
TextField 文本類型,對應 text,可以不指定最大長度
BooleanField 布爾型,對應 tinyint,使用 NullBooleanField 表示可爲空
DateField 日期類型,date。可以設置DateField.auto_now,每次保存對象時,自動設置爲當前時間
DateTimeField 日期時間類型, datetime。使用時傳入一個datetime.datetime()

Field的常用參數

參數名 介紹
primary_key 主鍵
unique 唯一
null 指定是否可以爲空,默認不爲空
blank 等於True時,form表單驗證時可以爲空
default 默認值
DateField.auto_now 每次修改都會將時間更新爲當前時間,使用QuerySet.update方法將不會更新,只有date和datetime以及 model.save()放方式纔會使用該更新。
DateField.auto_new_add 第一次添加進去,會將當前時間設置進去
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章