當時想做一個多條件查詢,但是對於要查詢的信息,是分布在不同的表里,這就涉及到了多表查詢問題。
DjangoBook里提到了一些查詢的方式,但是不夠全面,就去百度搜了下。
當去網上百度搜多表查詢,或多條件查詢時,都能搜到,但是相對較綜合點的信息,還是比較少。但是為了實現功能,
也思考了不少。下面貼上一些搜集來的資料。
關於多條件查詢
data = model.objects.filter(條件1) if a==4: data = data.fiter(條件2) if b==4: data = data.filter(條件3)
kwargs = {} if var1 != 'NONE': kwargs['field1'] = var1 if var2 is not None: kwargs['field2'] = var2 if var3 is not None: kwargs['field3'] = var3 if var4 is not None: kwargs['field4'] = var4 quest = model.objects.filter(**kwargs)
# 獲取動態過濾調價 def getKwargs(data={}): kwargs = {} kwargs['state'] = True for (k , v) in data.items() : if v is not None and v != u'' : kwargs[k] = v return kwargs
searchCondition = {'name__icontains' : name ,....} kwargs = utils.getKwargs(searchCondition) model_set = Model.objects.filter(**kwargs)
關於多表查詢
A表作為B表的外鍵,當通過B表查詢A表時候,可以通過__(兩個下划線)的方式過濾A表的內容
基本有這兩個知識,綜合起來就可以進行多表條件查詢了。
然后是一些自己的代碼,就不發了。