F 对象:
可以使用模型的 A 属性和 B 属性进行比较
写法:
需要的数据对象 = 数据表(类名).objects.filter(列名__条件=F('列名2'))
需求: 查看男生数量比女生少 的公司名称
companies = Company.objects.filter(c_boy_num__lt=F('c_girl_num')) F 对象支持算术运算 需求: 查看男生数量比女生少 15个的公司名称
companies = Company.objects.filter(c_boy_num__lt=F('c_girl_num')-15)

在 models.py 中创建数据表 Company

class Company(models.Model):
c_name = models.CharField(max_length=16)
# 公司名字
c_girl_num = models.IntegerField(max_length=16)
# 女生人数
c_boy_num = models.IntegerField(max_length=16)
# 男生人数

产生迁移文件
python manage.py makemigrations 进行迁移
python manage.py migrate

添加数据

 


在 urls.py 中进行注册

需求:
查看 女生多于男生的公司名称 url(r'getgirlgtboy',views.getgirlgtboy)
views.py 中创建 getgirlgtboy 函数

def getgirlgtboy(request):
companies = Company.objects.filter(c_girl_num__gt=F('c_boy_num'))
for company in companies:
# 进行遍历后查看公司名
print(company.c_name)
return HttpResponse("获取成功") 注:
F 导包 导入的是
from django.db.models import F


F 对象使用 算数表达式

def getgirlgtboy(request):
companies = Company.objects.filter(c_girl_num__lt=F('c_boy_num')-30)
# 查看男生比女生多于 30 的
for company in companies:
# 进行遍历后查看公司名
print(company.c_name)
return HttpResponse("获取成功")


Q 对象
过滤器的方法中的参数
常用于 组合条件 表名(models中创建的类) .objects.filter(Q(表中列名__条件=值)) 示例:
Student.objects.filter(Q(sage_lt=25)) Q对象支持 | & ~ 年龄大于等于 25 的
分析: 不小于 25

示例:
Student.objects.filter(~Q(sage_lt=25))

Q 对象可以对条件进行封装

封装后支持逻辑运算

与 &
或 |
非 ~

在 urls.py 中进行注册

url(r'getgirlandboy',views.getgirlandboy)
在 models.py 中添加 对应的函数 getgirlandboy

def getgirlandboy(request):
companies = Company.objects.filter(Q(c_boy_num__gt=90) & Q(c_girl_num__gt=80))
# 男生大于 90 且 女生大于 80 的公司名称
for company in companies:
# 进行遍历后查看公司名
print(company.c_name)
return HttpResponse("获取成功") 注:
且 : Q(条件) & Q(条件)
取反 : ~Q 表示取反
或 : Q(条件) | Q(条件)

运行结果

 


2020-05-11

最新文章

  1. Lua环境
  2. Maven中多模块的编译顺序
  3. C#使用Zxing2.0生成二维码 带简单中心LOGO
  4. .NET研发人员面试题(一)
  5. super() extends() private总结demo
  6. centos qt5,PyQt5 installation
  7. Nodejs in Visual Studio Code 09.企业网与CNPM
  8. swift 创建tableView并实现协议
  9. 作为前端,我为什么选择 Angular 2?
  10. 使用sklearn进行数据挖掘-房价预测(1)
  11. [LeetCode] Erect the Fence 竖立栅栏
  12. Jedis
  13. python 发送163邮件
  14. 1407: [Noi2002]Savage
  15. [LeetCode&Python] Problem 242. Valid Anagram
  16. mysql 批量杀进程
  17. zoj3261变形并查集
  18. bzoj1634护花
  19. 【转】使用DataConnectionDialog在运行时设置数据源连接字符串
  20. BZOJ3994:约数个数和(莫比乌斯反演:求[1,N]*[1,M]的矩阵的因子个数)

热门文章

  1. Spring Boot注解大全,一键收藏了!
  2. 关于渐进式 Web 应用,你应该知道的一切
  3. How many ways??,题解
  4. 简单的MVC框架
  5. day22 常用模块(上)
  6. java学习第六天2020/7/11
  7. The solution for apt-get update Err 404
  8. JavaWeb项目的目录结构解释(上):
  9. 模板方法模式(c++实现)
  10. Web For Pentester靶场(xss部分)