2013-09-09 19:43:55
1.多表連線查詢:當我知道這點的時候頓時覺得django太nx了。
class a(models.model):
name = models.charfield(u'名稱')
class b(models.model):
aa = models.foreignkey(a)
b.objects.filter(aa__name__contains='searchtitle')
1.5 我叫它反向查詢,後來插入記錄1.5,當我知道的時候瞬間就覺得django太太太nx了。
class a(models.model):
name = models.charfield(u'名稱')
class b(models.model):
aa = models.foreignkey(a,related_name="fan")
bb = models.charfield(u'名稱')
查a: a.objects.filter(fan__bb='***x'),都知道related_name的作用,a.fan.all()是一組以a為外來鍵的b例項,可前面這樣的用法是查詢出所有(b.aa=a且b.bb=***x)的a例項,然後還可以通過__各種關係查詢,真赤激!!!
2.條件選取queryset的時候,filter表示=,exclude表示!=。
queryset.distinct() 去重複
__exact 精確等於 like 'aaa'
__iexact 精確等於 忽略大小寫 ilike 'aaa'
__contains 包含 like '%aaa%'
__icontains 包含 忽略大小寫 ilike '%aaa%',但是對於sqlite來說,contains的作用效果等同於icontains。
__gt 大於
__gte 大於等於
__lt 小於
__lte 小於等於
__in 存在於乙個list範圍內
__startswith 以...開頭
__istartswith 以...開頭 忽略大小寫
__endswith 以...結尾
__iendswith 以...結尾,忽略大小寫
__range 在...範圍內
__year 日期欄位的年份
__month 日期欄位的月份
__day 日期欄位的日
__isnull=true/false
例子:>> q1 = entry.objects.filter(headline__startswith="what")
>> q2 = q1.exclude(pub_date__gte=datetime.date.today())
>> q3 = q1.filter(pub_date__gte=datetime.date.today())
>>> q = q.filter(pub_date__lte=datetime.date.today())
>>> q = q.exclude(body_text__icontains="food")
即q1.filter(pub_date__gte=datetime.date.today())表示為時間》=now,q1.exclude(pub_date__gte=datetime.date.today())表示為<=now
2013/12/12補充:
「在django models中取得乙個欄位的distinct值」。就是select distinct *** from table_name ...這樣的功能。使用values會生成valuesqueryset(形如n個dict組成的list),猜測大資料無額外效能影響,畢竟queryset系列都是使用時才查詢操作的。
***x.objects.values("field_name").distinct()
#或者***x.objects.distinct().values("field_name")
關於快取:
queryset是有快取的,a = a.objects.all(),print [i for i in a].第一次執行列印會查詢資料庫,然後結果會被儲存在queryset內建的cache中,再執行print的時候就會取自快取。
很多時候會遇到僅需判斷queryset是否為空的情況,可以1. if queryset:pass 2.if queryset.count>0:pass 3.if queryset.exists():pass. 三種方式效能依次提公升。
當queryset非常巨大時,cache會成為問題。此時可以queryset.iterator(),迭代器的用處就不多說了,根據具體需求情況使用。
避雷秘籍 iOS過審的基礎條件
初審通過了之後再提交的所有版本無論內容變化多大 名字是否改變 圖示是否改變,都視為更新包。遊戲更新包從提交完畢後等待時間為3 5天,進入審核後基本上1 2天出結果。如果你的更新包進入in review狀態超過3天都沒有結果,那麼80 會被打回。ios審核基本認識 好,下面我們來看看審核我們要怎麼做!...
快傳號怎麼過新手期,快傳號新手期轉正條件是什麼
什麼是快傳號新手期?1 快傳號註冊完成,通過資質審核之後即進入新手期。新手期轉正條件是什麼?1 已入駐平台7天以上 7天 2 當前快傳號指數達到200分 200分 3 當前信用指數為1000分,沒有違規操作。滿足以上三個標準後將自動轉正,屆時賬號上方的 新手期 標識會消失。入駐平台時間的計算規則是什...
瀏覽過此 的人還瀏覽過
資料庫設計很簡單 新增1個瀏覽日誌表 瀏覽日誌表表名 visitlog 字段 使用者id playerid 訪問模組id modelid 訪問時間 visittime 資料庫很簡單,難度主要在根據資料庫內的記錄計算出 瀏覽此商品的顧客還瀏覽 的列表!以下給出語句並做詳細解釋。查詢出模組的id,模組的...