Q()对象和F()对象类似,把一个sql表达式封装在对象中,这个对象可以用于数据库相关的操作
注意
这里提醒一下,如果使用F()对象进行数据库操作完之后,一定要重新进行查询集,才能获取到最新的实时数据
Q对象的好处
Q对象可以 | (or) 和 &(and) 操作
查询集使用,
隔开查询条件表示and操作,故使用and可以省略Q对象
但是普通的queryset是无法进行or操作的,Q对象就解决了这一问题
示例:
from django.db.models import Q
class Students(models.Model):
name = CharField(max_length=6,None=False,Blank=False)
age = InterField(None=False,Blank=False)
Q对象实现或or查询
students_list = Students.objects.filter(Q(name__ilike="zhang") | Q(age__gt=23))
Q对象实现与and查询
students_list = Students.objects.filter(Q(name__ilike="zhang") & Q(age__gt=23))
或者更简单的方法
students_list = Students.objects.filter(Q(name__ilike="zhang") , Q(age__gt=23))
使用Q对象的时候逗号会被认为是与条件连接在一起
注意Q对象与普通的查询放在一起的时候Q对象需要放到前面,
不过为了避免出现错误,最好使用Q对象的时候将所有的条件都转换为Q对象,使用逗号或者|连接