F对象 eg:常适用于表内属性的值的比较
模型:
class Company(models.Model):
c_name = models.CharField(max_length=16)
c_gril_num = models.IntegerField(default=5)
c_boy_num = models.IntegerField(default=3)
F:
获取字段信息,通常用在模型的自我属性比较,支持算术运算
eg:男生比女生少的公司
companies = Company.objects.filter(c_boy_num__lt=F('c_gril_num'))
eg:女生比男生多15个人
companies = Company.objects.filter(c_boy_num__lt=F('c_gril_num')-15)
Q对象 eg:常适用于逻辑运算 与或或 非
年龄小于25:
Student.objects.filter(Q(sage__lt=25))
eg:男生人数多余5 女生人数多于10个:
companies = Company.objects.filter(c_boy_num__gt=1).filter(c_gril_num__gt=5)
companies = Company.objects.filter(Q(c_boy_num__gt=5)|Q(c_gril_num__gt=10))
支持逻辑运算:
与或非
&
|
~
年龄大于等于的:
Student.objects.filter(~Q(sage__lt=25))