码迷,mamicode.com
首页 > 其他好文 > 详细

S20_DAY17--课堂笔记

时间:2018-05-03 23:35:30      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:ddr   any   star   tle   none   bubuko   group   display   翻译   

查询表记录

技术分享图片
基于对象查询(子查询)

      一对多 
      
                正向查询,按字段
          Book-------------------->Publish
              <---------------------
                反向查询,按表名小写_set:book_set
      
      
          obj=Book.objects.fliter(title="python").first()
          obj.publish
            
        
      多对多
      
                正向查询,按字段
          Book-------------------->Author
              <---------------------
              查询,按表名小写_set:book_set
      
      
     
          obj=Book.objects.fliter(title="python").first()
          obj.author.all()  #  [obj,....]

      
     一对一:
     
                正向查询,按字段
          Book-------------------->Author
              <---------------------
                查询,按表名小写
基于对象查询(子查询)
技术分享图片
基于queryset查询

        
              正向查询,按字段
          A-------------------->B
          <---------------------
        查询,按表名小写
基于queryset查询
技术分享图片
聚合和分组

        
  book   
    
    
    id   title    publish                       
     
    1     php       苹果        
        
    2     python    苹果      
    3     go        橘子

sql:  select publish,Count(*) from Book group by publish   
       
    #查询每一个出版社出版的书籍个数

    # ret=Publish.objects.all().annotate(c=Count("book")).values("name","c")
    # print(ret)


    # 查询每一个作者出版的书籍的平均价格
    ret=Author.objects.all().annotate(price_avg=Avg("book__price")).values("name","price_avg")
    print(ret)

    #查询每一本书籍名称以及作者的个数

    ret=Book.objects.all().annotate(c=Count("author")).values("title","c")
    print(ret)

    # 查询价格大于200的每一本书籍名称以及作者的个数
    ret = Book.objects.filter(price__gt=200).annotate(c=Count("author")).values("title", "c")
    print(ret)
聚合和分组
技术分享图片
F查询与Q查询


    # F
    from django.db.models import F,Q
    ret=Book.objects.filter(comment_num__gt=F("poll_num"))
    print(ret)
    ret=Book.objects.filter(comment_num__gt=F("read_num")*10)
    print(ret)
    Book.objects.all().update(price=F("price")+100)

    # Q
    ret=Book.objects.filter(title__startswith="java",price__gt=200)
    print(ret)
    ret = Book.objects.filter(Q(title__startswith="java")|~Q(price__lt=200))
    print(ret)
F查询与Q查询

 

ORM查询练习题

技术分享图片
class Book(models.Model):

    title = models.CharField(max_length=32)
    publishDate = models.DateField()
    price = models.DecimalField(max_digits=5, decimal_places=2)   #  999.99

    # 创建一对多的关联字段    :    是与某个书籍对象关联的出版社对象(注意,只有一个对象)
    publish=models.ForeignKey("Publish")

    # 创建的多对多的关系
    authors=models.ManyToManyField("Author")

class Publish(models.Model):
    nid = models.AutoField(primary_key=True)
    name=models.CharField( max_length=32)
    email=models.EmailField()

class Author(models.Model):
    name=models.CharField(max_length=32)
    age=models.IntegerField()
    

class AuthorDetail(models.Model):
    addr=models.CharField(max_length=32)
    email=models.EmailField()
    author=models.OneToOneField("Author")
models.py
基于图书管理系统的表关系与数据,进行如下查询
  要求:1-5查询分别基于对象查询,双下划线查询,以及找到对应翻译的sql语句
   

  1、查询人民出版社出版过的价格大于100的书籍的作者的email
  2、查询alex出版过的所有书籍的名称以及书籍的出版社的名称
  3、查询2011年出版社过的所有书籍的作者名字以及出版社名称
  4、查询住在沙河并且email以123开头的作者写过的所有书籍名称以及书籍的出版社名称
  5、查询年龄大于20岁的作者在哪些出版社出版过书籍
  6、查询每一个出版社的名称以及出版过的书籍个数
  7、查询每一个作者的名字以及出版过的所有书籍的最高价格
  8、查询每一本书的名字,对应出版社名称以及作者的个数

1.

技术分享图片

2.

技术分享图片

3.

技术分享图片

4.

技术分享图片

5.

技术分享图片

6.

技术分享图片

7.

技术分享图片

8.

技术分享图片

9.

技术分享图片

10.

技术分享图片

11.

技术分享图片

12.

技术分享图片

13.

技术分享图片

14. 以上是基于对象的查询

15.以下是基于QuerySet的查询

16.

 技术分享图片

17.

技术分享图片

18.

技术分享图片

19.

技术分享图片

20.

技术分享图片

21.

技术分享图片

22.

技术分享图片

23.

技术分享图片

24.

技术分享图片

25.

技术分享图片

26.

技术分享图片

27.

技术分享图片

28.

技术分享图片

29.

技术分享图片

30.

技术分享图片

31.

技术分享图片

32.

技术分享图片

33.

技术分享图片

34.DOM操作

技术分享图片

35.

技术分享图片

36.

技术分享图片

37.

技术分享图片

38.

技术分享图片

39.

技术分享图片

40.

技术分享图片

41.

技术分享图片

42.

技术分享图片

43.

技术分享图片

 

S20_DAY17--课堂笔记

标签:ddr   any   star   tle   none   bubuko   group   display   翻译   

原文地址:https://www.cnblogs.com/shangdelu/p/8987882.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!