F查询和Q查询

# Create your views here.
from django.db.models import Avg, Min, Max, Sum, F, Q
from app_01.models import Book
from app_01 import models

from datetime import datetime
from django.http import HttpResponse
from django.shortcuts import render


def date_op(req):

# F: F() 来做这样的比较
# Book.objects.all().update(price=F('price') + 20)

# Q

num = models.Book.objects.filter(Q(id=3) | Q(title='python') & Q(price__lt=100), color='blue')
print(num)

# ---- 聚合查询
# num1 = Book.objects.all().aggregate(Avg('price'), Max('price'), Min('price'))
# print(num1)

# ---- 分组查询
# sum1 = Book.objects.values('book_to_author__author__name').annotate(Sum('price'))
# print(sum1)

# 示例2:统计出每个出版社的最便宜的书的价格
# num2 = models.Publish.objects.values('name').annotate(Min('book__price'))
# print(num2)

# -----
# 关联查询: 双下划线:———— (如:book__title)

# 查询多对多
# author_name = models.Book_To_Author.objects.filter(book__title='python').values('author__name')
# print(author_name)

# name = models.Publish.objects.filter(book__title='python').values('name')
# print(name)
#
# title = models.Book.objects.filter(publisher__name='河南出版社').values('title')
# print(title)

# city = models.Book.objects.filter(title='python').values('publisher__city')
# print(city)

# 出版社为“河南出版社”的所有名
# obj = models.Publish.objects.filter(name="河南出版社")[0]
# print(obj.book_set.values('title').distinct())
# print(obj.book_set, type(obj.book_set))

# 书名为go的出版社的地址
# obj_set = models.Book.objects.filter(title='go')[0]
# print(obj_set.publisher.name)
# print(obj_set.publisher.city)
# ----
# 迭代器(性能)
# if obj_set.iterator():
# pass

# -- for循环

# obj_set = models.Book.objects.filter(id=3)
# for obj in obj_set:
# print(obj.title)
#
# obj_set.update(title='js')
# for obj in obj_set:
# print(obj.title)

# 修改
# models.Book.objects.filter(id=3).update(price=30)

# 删除
# models.Book.objects.filter(id=2).delete()

# models.Book_To_Author.objects.create(
# book_id=1,
# author_id=2,
# )

# dic1 = {"title": "", "price": 35, "color": "yellow"}
# Book.objects.create(**dic1)

# Book.objects.create(
# title="li漂流记",
# price=1,
# color="yellow",
#
# publisher_id=4,
# )

# book = models.Book.objects.filter(id=2)
# price = book.values("price")

# # 某些书绑定某些作者
# book = models.Book.objects.filter(id=2)[0]
# authors = models.Author.objects.filter(id_gt=2)
# # 绑定关系
# book.author.add(*authors)
# # 取消关系
# book.author.remove(*authors)

return HttpResponse("ok")

posted @ 2020-10-31 19:46  zxy_ang  阅读(179)  评论(0)    收藏  举报