前言:這一部分是關於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()
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='明')
rs = User.objects.filter(name__in=['小明', '小紅'])
rs = User.objects.filter(id__range=(12, 17))
rs = User.objects.filter(id__lt=15)
rs = User.objects.filter(id__lte=15)
rs = User.objects.filter(id__gt=15)
rs = User.objects.filter(id__gte=15)
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 |
第一次添加進去,會將當前時間設置進去 |