zoukankan      html  css  js  c++  java
  • Django 模型层表格的查找

    表格的创建

    方式1:
       publish_obj=Publish.objects.get(nid=1)
       book_obj=Book.objects.create(title="谁偷了我的奶酪",publishDate="2012-12-12",price=100,publish=publish_obj)
      
    方式2:
       book_obj=Book.objects.create(title="谁偷了我的奶酪",publishDate="2012-12-12",price=100,publish_id=1

    表格绑定多堆多的关系

      # 当前生成的书籍对象
        book_obj=Book.objects.create(title="追风筝的人",price=200,publishDate="2012-11-12",publish_id=1)
        # 为书籍绑定的做作者对象
        lowen=Author.objects.filter(name="lowen").first() # 在Author表中主键为2的纪录
        egon=Author.objects.filter(name="egon").first() # 在Author表中主键为1的纪录
    
        # 绑定多对多关系,即向关系表book_authors中添加纪录
        book_obj.authors.add(lowen,egon)    #  将某些特定的 model 对象添加到被关联对象集合中。   =======    book_obj.authors.add(*[])

    查询:

    一对多正向查询

    # 查询主键为1的书籍的出版社所在的城市
    book_obj=Book.objects.filter(pk=1).first()
    # book_obj.publish 是主键为1的书籍对象关联的出版社对象
    print(book_obj.publish.city)  

    一对多反向查询

    publish=Publish.objects.get(name="苹果出版社")
    #publish.book_set.all() : 与苹果出版社关联的所有书籍对象集合
    book_list=publish.book_set.all()    
    for book_obj in book_list:
           print(book_obj.title)

    一对一查询

    1 egon=Author.objects.filter(name="egon").first()
    2 print(egon.authorDetail.telephone)
    3 
    4 反向查询# 查询所有住址在北京的作者的姓名
    5  
    6 authorDetail_list=AuthorDetail.objects.filter(addr="beijing")
    7 for obj in authorDetail_list:
    8      print(obj.author.name)

    多对多查询

     1 # 金瓶眉所有作者的名字以及手机号
     2  
     3 book_obj=Book.objects.filter(title="金瓶眉").first()
     4 authors=book_obj.authors.all()
     5 for author_obj in authors:
     6      print(author_obj.name,author_obj.authorDetail.telephone)
     7 
     8 
     9 反向查询
    10 # 查询egon出过的所有书籍的名字
    11  
    12     author_obj=Author.objects.get(name="egon")
    13     book_list=author_obj.book_set.all()        #与egon作者相关的所有书籍
    14     for book_obj in book_list:
    15         print(book_obj.title)

    正向查询按字段,反向查询按表名小写,如果查询对象有多个的话表名小写_set

    基于双下划线的扩表查询

    1 queryResult=Book.objects
    2             .filter(publish__name="苹果出版社")
    3             .values_list("title","price")
    4 
    5     # 反向查询 按表名:book
    6 
    7     queryResult=Publish.objects
    8               .filter(name="苹果出版社")
    9               .values_list("book__title","book__price")
  • 相关阅读:
    C#面向对象编程进阶(一) ——实现栈
    Hibernate组件和关联映射
    创建多线程的两种方法
    Mybatis:ResultMap
    Mybatis:配置解析
    IDEA复制多行及对多行代码上下左右移动
    Mybatis:CRUD操作
    Mybatis简介
    算法分类 ,时间复杂度 ,空间复杂度,优化算法
    JAVA LOG4J使用方法
  • 原文地址:https://www.cnblogs.com/lowen107/p/10235482.html
Copyright © 2011-2022 走看看