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__方法实现)
本文介绍如何使用 Django 的 Q 对象进行复杂查询,通过组合多个查询条件来简化代码,提高查询效率。

被折叠的 条评论
为什么被折叠?



