Py学习  »  问与答

如果实现 多字段联合查询效率高一点?

271933409 • 9 年前 • 3023 次点击  

enter image description here

如图,有多个字段联合查询,如果不填表示不过滤。django中要怎么进行查询,我下面写的 查询效率低,哪位大神教一个好的办法。


查询字段相加

data=Yiyang_alarm_map.objects.all()

if request.REQUEST.has_key('no'): data=data.filter(alarmclass__contains=request.REQUEST['no'])

if request.REQUEST.has_key('alarmclass'):
    data=data.filter(alarmclass__contains=request.REQUEST['alarmclass'])


if request.REQUEST.has_key('activestatus'):
    data=data.filter(activestatus__contains=request.REQUEST['activestatus'])

if request.REQUEST.has_key('regionname'):
    data=data.filter(regionname__contains=request.REQUEST['regionname'])

if request.REQUEST.has_key('assetsip'):
    data=data.filter(assetsip__contains=request.REQUEST['assetsip'])

if request.REQUEST.has_key('riskname'):
    data=data.filter(riskname__contains=request.REQUEST['riskname'])
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1514
文章 [ 3 ]  |  最新文章 9 年前
曾哥
Reply   •   1 楼
曾哥    9 年前

para = {'k1':v1, 'k2':v2,...}
Yiyang_alarm_map.objects.filter(**para)

271933409
Reply   •   2 楼
271933409    9 年前

我不想用sql来实现,大家想想看用jdango模块的查询方法来实现。

271933409
Reply   •   3 楼
271933409    9 年前

对于不填时,有朋友说用None,如下 filter(name__contains=None) 事实上这项是查询值为None的条目,并不是空。