20.F和Q查询
? F表达式
employees = Employee.objects.all() for employee in employees: employee.salary += 1000 employee.save()
from djang.db.models import F Employee.object.update(salary=F("salary")+1000)
比如如果想要获取作者中,name和email相同的作者数据。如果不使用F表达式,那么需要使用以下代码来完成: authors = Author.objects.all() for author in authors: if author.name == author.email: print(author)
from django.db.models import F authors = Author.objects.filter(name=F("email")) Q表达式
books = Book.objects.filter(price__gte=100,rating__gte=9)
from django.db.models import Q books = Book.objects.filter(Q(price__lte=10) | Q(rating__lte=9))
from django.db.models import Q # 获取id等于3的图书 books = Book.objects.filter(Q(id=3)) # 获取id等于3,或者名字中包含文字"记"的图书 books = Book.objects.filter(Q(id=3)|Q(name__contains("记"))) # 获取价格大于100,并且书名中包含"记"的图书 books = Book.objects.filter(Q(price__gte=100)&Q(name__contains("记"))) # 获取书名包含“记”,但是id不等于3的图书 books = Book.objects.filter(Q(name__contains=‘记‘) & ~Q(id=3)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |