联表查询

下划线联表操作

  正向查询用属性 models.操作表类名.objects.filter(id=2).values('外联属性__外表字段名')

  反向查询用类名小写 models.操作表类名.objects.filter(外联表类名小写__属性=值).values('字段名')

聚合函数

  models.Book.objects.all().aggregate(Avg('price'))

  models.Book.objects.all().aggregate(Sum('price'))

  models.Book.objects.all().aggregate(Max('price'))

  models.Book.objects.all().aggregate(Min('price'))

F/Q查询

F查询

  models.Book.objects.filter(price=F('price')).update(price=F('price')+1)

  # 批量操作

Q查询

  models.Book.objects.filter(Q(price__gt=50)&Q(comment__gt=20))

  & 与  | 或  ~ 非

分组

单表  

models.Book.objects.values('publish_id').annotate(m=Max('price'))

多表

正向查询 models.Publish.objects.values('publish_id').annotate(m=Max('price')).values('publish__name','m')

逆向查询 models.Publish.objects.values('name').annotate(m=Max('book__price'))

     models.Publish.objects.annotate(m=Max('book__price')).values('name','m')

猜你喜欢

转载自www.cnblogs.com/lttlpp61007188/p/10940334.html