djang Q的用法

来源:互联网 发布:华资软件面试 编辑:程序博客网 时间:2024/04/28 03:39


from django.db.models import Q# stus1 = models.Student.objects.filter(name__icontains=keyword).all()# stus2 = models.Student.objects.filter(age__icontains=keyword).all()# stus3 = models.Student.objects.filter(score__icontains=keyword).all()# stus4 = models.Student.objects.filter(QQ__icontains=keyword).all()# stus5 = models.Student.objects.filter(cls=keyword).all()# stus = stus1 | stus2 | stus3 | stus4 | stus5# Q 是条件类,可以组合条件conditions = Q(name__icontains=keyword) | Q(age__icontains=keyword) | Q(score__icontains=keyword) | Q(QQ__icontains=keyword) | Q(cls__name__icontains=keyword)stus = models.Student.objects.filter(conditions).all()
这样可以大大缩减代码量。Q对象支持反(~),并(&),或(|)这样再复杂的查询语句也能够很好的支持(通过重写Q对象的__or__, __invert__, __and__方法实现)

原创粉丝点击