感谢老男孩~  一步一步走下去

前面是视图函数 后面是表结构models.py

  1. from django.shortcuts import render, HttpResponse
  2. from django.http import JsonResponse
  3.  
  4. # Create your views here.
  5. from app01 import models
  6.  
  7. def query(request):
  8. #########基于对象查询(子查询)###########
  9.  
  10. # 一对多 book(publish forkey) ---> publish 正向查询
  11. # 正向查询 按字段
  12. # 反向查询 表名_set.all() 一对多
  13. # 查询python这本书籍的出版社的邮箱
  14. python = models.Book.objects.filter(title="python").first() # 对象
  15. print(python.publish.email)
  16.  
  17. # 查询苹果出版社出版的书籍名称 (反向查询 表名小写_set.all())
  18. # publish_obj = models.Publish.objects.filter(name="苹果出版社").first() #对象
  19. # print(publish_obj)
  20. # for obj in publish_obj.book_set.all():
  21. # print(obj.title)
  22.  
  23. # 按字段(author.all())
  24. # 多对多 book ---------> author
  25. # <---------
  26. # book_set.all()
  27.  
  28. # 正向查询
  29. # 查询python的作者的年龄
  30. # python = models.Book.objects.filter(title="python").first()
  31. # for author in python.authors.all():
  32. # print(author.name,author.age)
  33.  
  34. # 反向查询
  35. # 查询alex出版过的书籍名称
  36. # alex = models.Author.objects.filter(name="alex").first()
  37. # for book in alex.book_set.all():
  38. # print(book.title)
  39.  
  40. # 一对一 按字段authorDetail
  41. # author -----------> authordetail
  42. # <------------
  43. # 按表名 author
  44. # 查询alex的手机号 (正向查询)
  45. # alex = models.Author.objects.filter(name="alex").first()
  46. # print(alex.authorDetail.telephone)
  47.  
  48. # 查询家在北京的作者名字 (反向查询)
  49. # obj = models.AuthorDetail.objects.filter(addr="北京").first()
  50. # print(obj.author.name)
  51.  
  52. print("分割线:", "*" * )
  53.  
  54. # 如果addr为北京的人很多 执行了若干次的一对一执行
  55. # obj_list = models.AuthorDetail.objects.filter(addr="北京").all()
  56. # for first in obj_list:
  57. # print(first.author.name)
  58. """
  59. 查询python这本书籍的出版社的邮箱 models.book.objects.filter(title="python").first().publish.email
  60. 第一步: SELECT "app01_book"."nid", "app01_book"."title", "app01_book"."publishDate", "app01_book"."price
  61. ", "app01_book"."publish_id" FROM "app01_book" WHERE "app01_book"."title" = 'python' ORDER BY "app01_boo
  62. k"."nid" ASC LIMIT 1; args=('python',)
  63. 第二步:SELECT "app01_publish"."nid", "app01_publish"."name", "app01_publish"."city", "app01_publish"."e
  64. mail" FROM "app01_publish" WHERE "app01_publish"."nid" = 1; args=(1,)
  65. 即: #若干条子查询 select语句
  66. select publish_id from Book where title = "python"
  67. select email from Publish where nid =
  68.  
  69. 查询alex手机号 models.author.objects.filter(name="alex").first().authorDetail.telephone
  70. select authorDetail_id from author where name = "alex"
  71. select telephone from authordetail where nid =
  72.  
  73. """
  74.  
  75. #########基于queryset和__查询 (join)###########
  76. # 正向查询:按字段__
  77. # 反向查询:表名小写__
  78. """
  79. 查询python 这本书籍的出版社的邮箱
  80. select publish.email from Book left join Publish on book.publish_id = publish.nid where book.title = "python"
  81. """
  82. # 查询python 这本书籍的出版社的邮箱 (正向查询)
  83. ret = models.Book.objects.filter(title="python").values("publish__email")
  84. #方式2
  85. models.Publish.objects.filter(book__title="python").values("email")
  86. print(ret.query) # ret.query属性 就不需要在setging设置全局了
  87. """
  88. SELECT "app01_publish"."email" FROM "app01_book" INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") WHERE "ap
  89. p01_book"."title" = python
  90.  
  91. """
  92.  
  93. #查询苹果出版社的书籍名称
  94. #方式1
  95. book = models.Publish.objects.filter(name="天空出版社").values("book__title")
  96. print(book.query)
  97. #方式2
  98. book = models.Book.objects.filter(publish__name="天空出版社").values("title")
  99. print(book.query)
  100. """
  101. SELECT "app01_book"."title" FROM "app01_publish"
  102. LEFT OUTER JOIN "app01_book" ON ("app01_publish"."nid" = "app01_book"."publish_id")
  103. WHERE "app01_publish"."name" = 天空出版社
  104.  
  105. SELECT "app01_book"."title" FROM "app01_publish"
  106. LEFT OUTER JOIN "app01_book" ON ("app01_book"."publish_id" = "app01_publish"."nid")
  107. WHERE "app01_publish"."name" = 天空出版社
  108.  
  109. """
  110.  
  111. #查询alex的手机号
  112. alex = models.Author.objects.filter(name="alex").values("authorDetail__telephone")
  113. print(alex)
  114. alex = list(alex)
  115. print(alex)
  116. tel = models.AuthorDetail.objects.filter(author__name="alex").values("telephone")
  117. print(tel)
  118.  
  119. #查询手机号以151开头的作者出版过的书籍名称以及对应的出版社名称 (五张表)
  120. book_ret = models.Book.objects.filter(authors__authorDetail__telephone__startswith="").values("title","publish__name")
  121. print(book_ret)
  122. publish_ret = models.Publish.objects.filter(book__authors__authorDetail__telephone__startswith="").values("book__title","name")
  123. print(publish_ret)
  124. """
  125. SELECT "app01_book"."titl
  126. e", "app01_publish"."name" FROM "app01_book" INNER JOIN "app01_book_authors" ON ("app01_book"."nid" = "app01_book_authors"."book_id") INNER
  127. JOIN "app01_author" ON ("app01_book_authors"."author_id" = "app01_author"."nid") INNER JOIN "app01_authordetail" ON ("app01_author"."authorD
  128. etail_id" = "app01_authordetail"."nid") INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") WHERE "app01_autho
  129. rdetail"."telephone" LIKE 151% ESCAPE '\'
  130. """
  131. # test查询手机号以151开头的作者出版过的书籍名称以及对应的出版社名称 (五张表)
  132. book = models.Book.objects.filter(authors__authorDetail__telephone__startswith="").values("title","publish__name")
  133. publish = models.Publish.objects.filter(book__authors__authorDetail__telephone__startswith="").values("book__title","name")
  134. print("this is test",book,publish)
  135.  
  136. ###############################聚合与分组#####################################
  137. #查询所有书籍的价格和
  138. from django.db.models import Sum, Count, Avg
  139. ret = models.Book.objects.all().aggregate(price_sum = Sum("price"))
  140. print(ret) #ret为字典 {'price_sum': Decimal('710.00')}
  141.  
  142. #查询所有作者的平均年龄
  143. ret = models.Author.objects.all().aggregate(age_avg = Avg("age"))
  144. print(ret)
  145.  
  146. #统计有多少个作者
  147. ret = models.Author.objects.all().aggregate(num = Count("nid"))
  148. print(ret)
  149.  
  150. #分组
  151. """
  152. sql分组
  153. emp表
  154. id name age dep
  155. alex 技术部
  156. egon 技术部
  157. wenzhou 运营部
  158. jc 运营部
  159.  
  160. 查询每一个部门的人数
  161. sql:
  162. select Count(id) from emp group by dep
  163. orm:
  164. models.emp.objects.values("dep").annotate(c=Count("id"))
  165.  
  166. emp表
  167. id name age dep_id
  168. alex
  169. egon
  170. wenzhou
  171.  
  172. dep表
  173. id name
  174. 技术部
  175. 运营部
  176.  
  177. 查询每一个部门名称以及对应人数
  178. sql:
  179. select * from emp inner join dep on emp.dep_id = dep.id
  180. id name age dep_id dep.id dep.name
  181. alex 技术部
  182. egon 运营部
  183. wenzhou 运营部
  184. select dep.name, Count(*) from emp inner join dep on emp.dep_id = dep.id group by dep.id, dep.name
  185.  
  186. ORM:
  187. 关键点:
  188. .queryset数据可以调用annotate()
  189. .annotate进行分组统计,按照前面的select的字段进行group by
  190. .annotate()返回值依然是queryset对象, 增加了分组统计的键值对
  191. models.dep.objects.values("name").annotate(c=Count("emp__name")).values("name","c")
  192. models.emp.objects.values("dep__name").annotate(c=Count("name")).values("dep__name", "c")
  193. select dep.name, Count(emp.name) as c from dep inner join emp on .. group by dep.name
  194.  
  195. select ___ from ___ inner join ___ on ... group by ___
  196. """
  197. ret = models.Publish.objects.values("name") #SELECT "app01_publish"."name" FROM "app01_publish"
  198. print(ret.query)
  199.  
  200. from django.db.models import Max
  201. #查询每一个作者的名字以及出版过的书籍最高价格
  202. ret = models.Author.objects.values("name").annotate(max_price = Max("book__price")).values("name","max_price")
  203. print(ret)
  204.  
  205. """
  206. select author.name, Max(book.price) as max_price from author inner join book_authors on ...
  207. inner join book on ...
  208. group by author.name
  209. """
  210.  
  211. #查询每一个出版社出版过的书籍的平均价格
  212. ret = models.Publish.objects.values("name").annotate(avg_price = Avg("book__price")).values("name","avg_price")
  213. print(ret)
  214.  
  215. #查询每一本书籍的作者个数
  216. ret = models.Book.objects.values("title").annotate(author_count = Count("authors__name")).values("title","author_count") #或者将authors__name换成authors
  217. print(ret)
  218.  
  219. #查询每一个分类的名称以及对应的文章数
  220. # models.Category.objects.all().annotate(c = Count("article__title")).values("title","c")
  221.  
  222. #统计不止2个作者的图书名称: 作者数大于两个 难点
  223. #先统计每个本书籍的作者个数
  224. ret = models.Book.objects.values("title").annotate(count=Count("authors__name")).values("title","count")
  225. print(ret)
  226.  
  227. """
  228. select book.title, Count(author.name) as c from book inner join book-authors on ..
  229. inner join author on ..
  230. group by book.id having c >
  231. """
  232. ret = models.Book.objects.values("title").annotate(count=Count("authors__name")).filter(count__gt=).values("title","count")
  233. print(ret)
  234. #统计作者为2的图书名称
  235. ret = models.Book.objects.values("title").annotate(count=Count("authors__name")).filter(count=).values("title","count")
  236. print(ret)
  237.  
  238. #统计出版的每一本价格大于100的书籍
  239. ret = models.Book.objects.values("title").filter(price__gt=).values("title","price")
  240. print(ret)
  241.  
  242. #统计每一个出版出版的书籍及价格
  243. ret = models.Publish.objects.values("name").annotate(count=Count("book__title")).values("name","book__title")
  244. print(ret)
  245.  
  246. #统计每一个出版社出版的书籍个数
  247. ret = models.Publish.objects.values("name").annotate(count=Count("book__title")).values("name","count")
  248. print(ret)
  249.  
  250. #统计每一个出版社出版大于100的书籍名称
  251. ret = models.Publish.objects.values("name").annotate().filter(book__price__gt=).values("name","book__title","book__price")
  252. print(ret)
  253. return HttpResponse("ok")
  1. from django.db import models
  2.  
  3. # Create your models here.
  4. from django.db import models
  5.  
  6. # Create your models here.
  7.  
  8. class Author(models.Model):
  9. nid = models.AutoField(primary_key=True)
  10. name=models.CharField( max_length=)
  11. age=models.IntegerField()
  12.  
  13. # 与AuthorDetail建立一对一的关系
  14. authorDetail=models.OneToOneField(to="AuthorDetail",on_delete=models.CASCADE)
  15.  
  16. class AuthorDetail(models.Model):
  17.  
  18. nid = models.AutoField(primary_key=True)
  19. birthday=models.DateField()
  20. telephone=models.BigIntegerField()
  21. addr=models.CharField( max_length=)
  22.  
  23. class Publish(models.Model):
  24. nid = models.AutoField(primary_key=True)
  25. name=models.CharField( max_length=)
  26. city=models.CharField( max_length=)
  27. email=models.EmailField()
  28.  
  29. class Book(models.Model):
  30.  
  31. nid = models.AutoField(primary_key=True)
  32. title = models.CharField( max_length=)
  33. publishDate=models.DateField()
  34. price=models.DecimalField(max_digits=,decimal_places=)
  35. publish=models.ForeignKey(to="Publish",to_field="nid",on_delete=models.CASCADE)
  36. authors=models.ManyToManyField(to='Author',) #多对多关联字段
  1. from django.shortcuts import render, HttpResponse
    from django.http import JsonResponse
  2.  
  3. # Create your views here.
    from app01 import models
  4.  
  5. def query(request):
    #########基于对象查询(子查询)###########
  6.  
  7. # 一对多 book(publish forkey) ---> publish 正向查询
    # 正向查询 按字段
    # 反向查询 表名_set.all() 一对多
    # 查询python这本书籍的出版社的邮箱
    python = models.Book.objects.filter(title="python").first() # 对象
    print(python.publish.email)
  8.  
  9. # 查询苹果出版社出版的书籍名称 (反向查询 表名小写_set.all())
    # publish_obj = models.Publish.objects.filter(name="苹果出版社").first() #对象
    # print(publish_obj)
    # for obj in publish_obj.book_set.all():
    # print(obj.title)
  10.  
  11. # 按字段(author.all())
    # 多对多 book ---------> author
    # <---------
    # book_set.all()
  12.  
  13. # 正向查询
    # 查询python的作者的年龄
    # python = models.Book.objects.filter(title="python").first()
    # for author in python.authors.all():
    # print(author.name,author.age)
  14.  
  15. # 反向查询
    # 查询alex出版过的书籍名称
    # alex = models.Author.objects.filter(name="alex").first()
    # for book in alex.book_set.all():
    # print(book.title)
  16.  
  17. # 一对一 按字段authorDetail
    # author -----------> authordetail
    # <------------
    # 按表名 author
    # 查询alex的手机号 (正向查询)
    # alex = models.Author.objects.filter(name="alex").first()
    # print(alex.authorDetail.telephone)
  18.  
  19. # 查询家在北京的作者名字 (反向查询)
    # obj = models.AuthorDetail.objects.filter(addr="北京").first()
    # print(obj.author.name)
  20.  
  21. print("分割线:", "*" * )
  22.  
  23. # 如果addr为北京的人很多 执行了若干次的一对一执行
    # obj_list = models.AuthorDetail.objects.filter(addr="北京").all()
    # for first in obj_list:
    # print(first.author.name)
    """
    查询python这本书籍的出版社的邮箱 models.book.objects.filter(title="python").first().publish.email
    第一步: SELECT "app01_book"."nid", "app01_book"."title", "app01_book"."publishDate", "app01_book"."price
    ", "app01_book"."publish_id" FROM "app01_book" WHERE "app01_book"."title" = 'python' ORDER BY "app01_boo
    k"."nid" ASC LIMIT 1; args=('python',)
    第二步:SELECT "app01_publish"."nid", "app01_publish"."name", "app01_publish"."city", "app01_publish"."e
    mail" FROM "app01_publish" WHERE "app01_publish"."nid" = 1; args=(1,)
    即: #若干条子查询 select语句
    select publish_id from Book where title = "python"
    select email from Publish where nid = 1
  24.  
  25. 查询alex手机号 models.author.objects.filter(name="alex").first().authorDetail.telephone
    select authorDetail_id from author where name = "alex"
    select telephone from authordetail where nid = 1
  26.  
  27. """
  28.  
  29. #########基于queryset和__查询 (join)###########
    # 正向查询:按字段__
    # 反向查询:表名小写__
    """
    查询python 这本书籍的出版社的邮箱
    select publish.email from Book left join Publish on book.publish_id = publish.nid where book.title = "python"
    """
    # 查询python 这本书籍的出版社的邮箱 (正向查询)
    ret = models.Book.objects.filter(title="python").values("publish__email")
    #方式2
    models.Publish.objects.filter(book__title="python").values("email")
    print(ret.query) # ret.query属性 就不需要在setging设置全局了
    """
    SELECT "app01_publish"."email" FROM "app01_book" INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") WHERE "ap
    p01_book"."title" = python
  30.  
  31. """
  32.  
  33. #查询苹果出版社的书籍名称
    #方式1
    book = models.Publish.objects.filter(name="苹果出版社").values("book__title")
    print(book.query)
    #方式2
    book = models.Book.objects.filter(publish__name="苹果出版社").values("title")
    print(book.query)
    """
    SELECT "app01_book"."title" FROM "app01_publish"
    LEFT OUTER JOIN "app01_book" ON ("app01_publish"."nid" = "app01_book"."publish_id")
    WHERE "app01_publish"."name" = 苹果出版社
  34.  
  35. SELECT "app01_book"."title" FROM "app01_publish"
    LEFT OUTER JOIN "app01_book" ON ("app01_book"."publish_id" = "app01_publish"."nid")
    WHERE "app01_publish"."name" = 苹果出版社
  36.  
  37. """
  38.  
  39. #查询alex的手机号
    alex = models.Author.objects.filter(name="alex").values("authorDetail__telephone")
    print(alex)
    alex = list(alex)
    print(alex)
    tel = models.AuthorDetail.objects.filter(author__name="alex").values("telephone")
    print(tel)
  40.  
  41. #查询手机号以151开头的作者出版过的书籍名称以及对应的出版社名称 (五张表)
    book_ret = models.Book.objects.filter(authors__authorDetail__telephone__startswith="151").values("title","publish__name")
    print(book_ret)
    publish_ret = models.Publish.objects.filter(book__authors__authorDetail__telephone__startswith="151").values("book__title","name")
    print(publish_ret)
    """
    SELECT "app01_book"."titl
    e", "app01_publish"."name" FROM "app01_book" INNER JOIN "app01_book_authors" ON ("app01_book"."nid" = "app01_book_authors"."book_id") INNER
    JOIN "app01_author" ON ("app01_book_authors"."author_id" = "app01_author"."nid") INNER JOIN "app01_authordetail" ON ("app01_author"."authorD
    etail_id" = "app01_authordetail"."nid") INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") WHERE "app01_autho
    rdetail"."telephone" LIKE 151% ESCAPE '\'
    """
    # test查询手机号以151开头的作者出版过的书籍名称以及对应的出版社名称 (五张表)
    book = models.Book.objects.filter(authors__authorDetail__telephone__startswith="151").values("title","publish__name")
    publish = models.Publish.objects.filter(book__authors__authorDetail__telephone__startswith="151").values("book__title","name")
    print("this is test",book,publish)
  42.  
  43. ###############################聚合与分组#####################################
    #查询所有书籍的价格和
    from django.db.models import Sum, Count, Avg
    ret = models.Book.objects.all().aggregate(price_sum = Sum("price"))
    print(ret) #ret为字典 {'price_sum': Decimal('710.00')}
  44.  
  45. #查询所有作者的平均年龄
    ret = models.Author.objects.all().aggregate(age_avg = Avg("age"))
    print(ret)
  46.  
  47. #统计有多少个作者
    ret = models.Author.objects.all().aggregate(num = Count("nid"))
    print(ret)
  48.  
  49. #分组
    """
    sql分组
    emp表
    id name age dep
    1 alex 21 保安部
    2 egon 23 保安部
    3 wenzhou 25 保安部
    4 jc 22 保安部
  50.  
  51. 查询每一个部门的人数
    sql:
    select Count(id) from emp group by dep
    orm:
    models.emp.objects.values("dep").annotate(c=Count("id"))
  52.  
  53. emp表
    id name age dep_id
    1 alex 21 1
    2 egon 23 2
    3 wenzhou 25 2
  54.  
  55. dep表
    id name
    1 保安部
    2 保洁部
  56.  
  57. 查询每一个部门名称以及对应人数
    sql:
    select * from emp inner join dep on emp.dep_id = dep.id
    id name age dep_id dep.id dep.name
    1 alex 21 1 1 保安部
    2 egon 23 2 2 保洁部
    3 wenzhou 25 2 2 保洁部
    select dep.name, Count(*) from emp inner join dep on emp.dep_id = dep.id group by dep.id, dep.name
  58.  
  59. ORM:
    关键点:
    1.queryset数据可以调用annotate()
    2.annotate进行分组统计,按照前面的select的字段进行group by
    3.annotate()返回值依然是queryset对象, 增加了分组统计的键值对
    models.dep.objects.values("name").annotate(c=Count("emp__name")).values("name","c")
    models.emp.objects.values("dep__name").annotate(c=Count("name")).values("dep__name", "c")
    select dep.name, Count(emp.name) as c from dep inner join emp on .. group by dep.name
  60.  
  61. select ___ from ___ inner join ___ on ... group by ___
    """
    ret = models.Publish.objects.values("name") #SELECT "app01_publish"."name" FROM "app01_publish"
    print(ret.query)
  62.  
  63. from django.db.models import Max
    #查询每一个作者的名字以及出版过的书籍最高价格
    ret = models.Author.objects.values("name").annotate(max_price = Max("book__price")).values("name","max_price")
    print(ret)
  64.  
  65. """
    select author.name, Max(book.price) as max_price from author inner join book_authors on ...
    inner join book on ...
    group by author.name
    """
  66.  
  67. #查询每一个出版社出版过的书籍的平均价格
    ret = models.Publish.objects.values("name").annotate(avg_price = Avg("book__price")).values("name","avg_price")
    print(ret)
  68.  
  69. #查询每一本书籍的作者个数
    ret = models.Book.objects.values("title").annotate(author_count = Count("authors__name")).values("title","author_count") #或者将authors__name换成authors
    print(ret)
  70.  
  71. #查询每一个分类的名称以及对应的文章数
    # models.Category.objects.all().annotate(c = Count("article__title")).values("title","c")
  72.  
  73. #统计不止2个作者的图书名称: 作者数大于两个 难点
    #先统计每个本书籍的作者个数
    ret = models.Book.objects.values("title").annotate(count=Count("authors__name")).values("title","count")
    print(ret)
  74.  
  75. """
    select book.title, Count(author.name) as c from book inner join book-authors on ..
    inner join author on ..
    group by book.id having c > 2
    """
    ret = models.Book.objects.values("title").annotate(count=Count("authors__name")).filter(count__gt=).values("title","count")
    print(ret)
    #统计作者为2的图书名称
    ret = models.Book.objects.values("title").annotate(count=Count("authors__name")).filter(count=).values("title","count")
    print(ret)
  76.  
  77. #统计出版的每一本价格大于100的书籍
    ret = models.Book.objects.values("title").filter(price__gt=).values("title","price")
    print(ret)
  78.  
  79. #统计每一个出版出版的书籍及价格
    ret = models.Publish.objects.values("name").annotate(count=Count("book__title")).values("name","book__title")
    print(ret)
  80.  
  81. #统计每一个出版社出版的书籍个数
    ret = models.Publish.objects.values("name").annotate(count=Count("book__title")).values("name","count")
    print(ret)
  82.  
  83. #统计每一个出版社出版大于100的书籍名称
    ret = models.Publish.objects.values("name").annotate().filter(book__price__gt=).values("name","book__title","book__price")
    print(ret)
    return HttpResponse("ok")

ORM中基于对象查询与基于queryset查询的更多相关文章

  1. Django ORM 之基于对象、双下划线查询

    返回ORM目录 Django ORM 内容目录: 一. 基于对象的表查询 二. 基于双下划线的查询 三. 聚合查询 aggregate 四. 分组查询 annotate 一. 基于对象的表查询 1.正 ...

  2. django的orm中F对象的使用

    今天不巧就用上了. 就是将数据库的字段,自增1的场景. from django.db.models import F DeployPool.objects.filter(name=deployvers ...

  3. [C++程序设计]基于对象的程序设计 基于对象的程序设计

    1. 面向对象分析(object oriented analysis,OOA)2. 面向对象设计(object oriented design,OOD)3. 面向对象编程(object oriente ...

  4. C#ORM中的对象映射

    使用Linq.Expressions来动态生成映射方法 1.我们先写个简单的类Test,包含一个ID和Name. public class Test { public int? ID { get; s ...

  5. Python学习---ORM查询之基于对象的正向/反向/聚合/分组/Q/F查询

    ORM查询之基于对象的正向查询与反向查询 对象形式的查询 # 正向查询 ret1=models.Book.objects.first() print(ret1.title) print(ret1.pr ...

  6. django之 使用views.py里面的函数对表进行增删改查 内容(models.py中表的创建、views.py中函数的使用,基于对象的跨表查询)

    models之对于表的创建有以下几种: 一对一:ForeignKey("Author",unique=True),  OneToOneField("Author" ...

  7. ORM查询之基于对象的正向查询与反向查询

    一.为什么有正向查询和反向查询? 举例有两张表,一张表叫书籍表,一张表叫出版社表,他们关系是一对多的关系,书籍是多,出版社是一,因为一本书应该只有一个出版社对应,而出版社可以有多本书对应. 那么在实际 ...

  8. orm多表的创建和基于对象的查询

    创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系( ...

  9. 基于对象的orm跨表查询再练习

    model.py from django.db import models # Create your models here. class Book(models.Model): nid = mod ...

随机推荐

  1. spring boot启动原理步骤分析

    spring boot最重要的三个文件:1.启动类 2.pom.xml 3.application.yml配置文件 一.启动类->main方法 spring boot启动原理步骤分析 1.spr ...

  2. apk去广告工具(利用apktool去除apk文件里的广告)

    基本知识 apk安装包的文件结构 以知名桌面软件“LauncherPro”为例,apk安装包文件目录: 文件目录如下: - META-INF - res - anim - color - drawab ...

  3. ZOJ 3329

    方程很明显有 d[i]=sum(pk*d[i+k])+p0*d[0]; 其中pi可以在开始时枚举求出. 设d[i]=A[i]*d[0]+B[i], 代入上式 d[i]=(sum(pk*A[i+k])+ ...

  4. 安卓ProgressBar水平进度条的颜色设置

    安卓系统提供了水平进度条ProgressBar的样式,而我们在实际开发中,差点儿不可能使用默认的样式.原因就是"太丑"^_^ 所以我们在很多其它的时候须要对其颜色进行自己定义,主要 ...

  5. JAVA设计模式之【桥接模式】

    桥接模式 蜡笔中颜色和型号之间存在耦合 毛笔中,颜色和型号解耦了 如果软件系统中某个类存在两个独立变化的维度,桥接模式可以将两个维度分离出来 角色 抽象类 扩充抽象类 实现类接口 提供基本操作 抽象类 ...

  6. hdoj--3666--THE MATRIX PROBLEM(差分约束+SPFA深搜)

    THE MATRIX PROBLEM Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  7. HD-ACM算法专攻系列(10)——大明A+B

    题目描述: 源码: 需要注意的一点是输出是最简形式,需要去除小数的后导0,而调用stripTrailingZeros()函数后,数会以科学计数法输出,所以需要调用toPlainString(). im ...

  8. H.264标准(一)mp4封装格式详解

    在网络层,互联网提供所有应用程序都要使用的两种类型的服务,尽管目前理解这些服务的细节并不重要,但在所有TCP/IP概述中,都不能忽略他们: 无连接分组交付服务(Connectionless Packe ...

  9. Gradle学习总结

    Gradle学习系列 (1). Gradle快速入门 (2). 创建Task的多种方法 (3). 读懂Gradle语法 (4). 增量式构建 (5). 自定义Property (6). 使用java ...

  10. C# HttpHelper万能框架实现 接口

    POST请请求是使用Http协议与请求的URL进行连接,然后再写入数据,最后关闭连接的过程 方法(1) //要Post的数据 string postdate = "a=123&c=4 ...