10.26orm 查询

1 操作记录

  一对多:
        方式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.publish : 与这本书籍关联出版社对象
           
           
  多对多记录操作:
        核心:先第三张关系表添加记录
              app01_book_author
                   
                   id    book_id    author_id
                    1       1            1
                    2       1            2
                    3       2            2
                    
             author
             
             
                id   name
                 1   alex
                 2   egon
        
        book_obj.authors.add(1,2) 
        book_obj.authors.remove(1) 
        book_obj.authors.clear() 
        book_obj.authors.set(3)
        
        book_obj.authors.all()  # 查询与这本书关联的所有queryset的集合
        
        
        
2 基于对象的跨表查询(基于子查询)

    正向查询
    
    一对多: 
                      正向查询按字段:book.publish
            Book----------------------------------------->Publish
                 <---------------------------------------
                  反向查询表名小写_set.all():pub_obj.book_set.all()


 
    多对多:
                    正向查询按字段 book.authors.all()
            Book  -------------------------------------->Author
                 <--------------------------------------
                    反向查询按表名小写_set.all(): alex.book_set.all()


    一对一:
                     正常查询安字段:alex.ad
        Author -----------------------------------------> AuthorDetail
               <------------------------------------------
                     反向查询按表名小写 ad.author
    
    总结:正向查询按字段,反向查询
                                得到一个对象,按表名小写
                                可能得到多个对象,按表名小写_set().all()
    
 




基于双下划线的跨表查询(基于join实现的) 

KEY:正向查询按字段,反向查询按表明小写

 

转载于:https://www.cnblogs.com/zzy7372/p/9856711.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值