div id="myTime">

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")

 

posted @ 2019-01-07 20:22  lowen107  阅读(123)  评论(0编辑  收藏  举报