Django视图Q和F对象使用
"""6.Q和F对象使用"""
from django.db.models import F, Q
# 1. F对象:用于对一个数据表中某个对象不同属性的比较:比如,学生表中,男生多的班级有哪些
# Grade.objects.filter(boy_num__gte=F('girl_num'))
print(Article.objects.filter(art_click__gte=F('id')))
# 使用F()进行计算
re_path(r'^blog/(\d+)/$', views.blog),
Article.objects.filter(id=num).update(art_click=F('art_click') + 1) # update只能用于查询集后
# 2. Q对象:filter(key1=val1, key2=val2)这里是'and'关系,Q对象就的与之相反,表示'or或'关系
print((Article.objects.filter(art_title__contains='FF', art_time__day=18))) # and
print((Article.objects.filter(Q(art_title__contains='FF') | Q(art_time__day=18)))) # or
print(Article.objects.filter(Q(id__gt=10)))
# 等同于
print(Article.objects.filter(id__gt=10))
# 取反操作:
print(Article.objects.filter(~Q(art_click__gt=10)))
# 等同于
print(Article.objects.filter(art_click__lt=10))