如何使用Django的Q对象和F对象实现复杂查询?

2026-05-24 22:570阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1099个文字,预计阅读时间需要5分钟。

如何使用Django的Q对象和F对象实现复杂查询?

Q对象:优势:可以实现与|或非|组合查询。例如:Book.objects.filter(id__gt=2, bread__gt=20)

如何使用Django的Q对象和F对象实现复杂查询?

Q对象:

优势:可以实现 与|或|非 组合查询。

给几个小例子就一目了然了:

Book.objects.filter(id__gt=2,bread__gt=20) #and关系
Book.objects.filter(Q(bread__gt=20) & Q(id__gt=2)) #and关系
Book.objects.filter(Q(bread__gt=20) | Q(id__gt=2)) #or关系
Book.objects.filter.(~Q(id=3)) # ~表示not,查询编号不等于3的图书

F对象:

优势:能利用当前obj的值进行比较。

Book.objects.filter(bread__gt=F('bcomment')*2) #阅读量大于评论量的图书*2,可以在F对象上使用算术运算

以前你可能经常只进行Book.objects.filter(bread__gt=20)这样的查询 ,有了F对象你就可以和当前obj的属性值进行比较了。

阅读全文
标签:实现对象

本文共计1099个文字,预计阅读时间需要5分钟。

如何使用Django的Q对象和F对象实现复杂查询?

Q对象:优势:可以实现与|或非|组合查询。例如:Book.objects.filter(id__gt=2, bread__gt=20)

如何使用Django的Q对象和F对象实现复杂查询?

Q对象:

优势:可以实现 与|或|非 组合查询。

给几个小例子就一目了然了:

Book.objects.filter(id__gt=2,bread__gt=20) #and关系
Book.objects.filter(Q(bread__gt=20) & Q(id__gt=2)) #and关系
Book.objects.filter(Q(bread__gt=20) | Q(id__gt=2)) #or关系
Book.objects.filter.(~Q(id=3)) # ~表示not,查询编号不等于3的图书

F对象:

优势:能利用当前obj的值进行比较。

Book.objects.filter(bread__gt=F('bcomment')*2) #阅读量大于评论量的图书*2,可以在F对象上使用算术运算

以前你可能经常只进行Book.objects.filter(bread__gt=20)这样的查询 ,有了F对象你就可以和当前obj的属性值进行比较了。

阅读全文
标签:实现对象