当时想做一个多条件查询,但是对于要查询的信息,是分布在不同的表里,这就涉及到了多表查询问题。
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表的内容
基本有这两个知识,综合起来就可以进行多表条件查询了。
然后是一些自己的代码,就不发了。