标签:结果 values djang foreign ext too length 名称 empty
https://www.cnblogs.com/yuanchenqi/articles/7652353.html
models.py: class Book(models.Model): nid=models.AutoField(primary_key=True) title=models.CharField(max_length=32) # 书籍与出版社: 一对多 publisher=models.ForeignKey(to="Publish",related_name="bookList") # 书籍与作者: 多对多 authors=models.ManyToManyField("Author") class Publish(models.Model): name=models.CharField(max_length=32) class Author(models.Model): name=models.CharField(max_length=32) class AuthorDetail(models.Model): addr=models.CharField(max_length=32) author=models.OneToOneField("Author") 1、单表查询 models.Book.obejcts.all() # QuerySet [] models.Book.obejcts.filter(nid__gt=1,nid__lt=10) # QuerySet [] models.Book.obejcts.get() # model对象 models.Book.obejcts.values() # QuerySet [{},{}] models.Book.obejcts.values_list() models.Book.obejcts.exclude() models.Book.obejcts.all().first() models.Book.obejcts.all().last() models.Book.obejcts.all().orderby() models.Book.obejcts.all().reverse() models.Book.obejcts.values("price").distinct() models.Book.obejcts.all().count() models.Book.obejcts.all().exist() ---- 双下划线: models.Book.obejcts.filter(nid__gt=12) models.Book.obejcts.filter(price__in=[112,223,444]) 支持链式操作: models.Book.obejcts.all().filter().orderby("id").count() models.Book.obejcts.all().get().orderby("id").count() 1、跨表查询 ---- 基于对象 (1) 查询Linux这本书的出版社名称和作者名字 属于正向查询 按关联字段 book_obj=models.Book.obejcts.get(title="linux") book_obj.publisher.name authors_list=book_obj.authors.all() for author in authors_list: print(author.name) (2) 人民出版社出版过的所有书籍名称 属于反向查询 if 设置related_name,那么related_name的值,没有设置,按表明_set publish_obj=models.Publish.obejcts.filter(name="人民出版社").first() book_list=publish_obj.bookList.all() for book in book_list: print(book.title) (3) alex 出版社过得所有书籍的名称 属于反向查询 if 设置related_name,那么related_name的值,没有设置,按表明_set alex=models.Author.obejcts.get(name="alex") book_list=alex.book_set.all() for book in book_list: print(book.title) (4) 作者alex的所在地址 正向查询 按字段 反向查询 按表名 alex=models.Author.obejcts.get(name="alex") alex.authordetail.addr ---- 基于QuerySet 双下划线: 正向查询:按字段 反向查询:按表名 key: 1 过滤条件 2 查询结果 (1) 查询Linux这本书的出版社名称和作者名字 属于正向查询 按关联字段 models.Book.obejcts.filter(title="linux").values("publisher__name") # [{"publisher__name":"人民出版社"}] models.Book.obejcts.filter(title="linux").values("authors__name") # (2) 人民出版社出版过的所有书籍名称 models.Book.obejcts.filter(publisher__name="人民出版社").values("title") models.Publish.obejcts.filter(name="人民出版社").values("book__title") (3) alex 出版社过得所有书籍的名称 models.Book.obejcts.filter(authors__name="alex").values("title") models.Author.obejcts.filter(name="alex").values("book__title")
如果说短时间内一条条的添加数据的话,可能会造成服务器压力太大。
可以将要创建的数据打包,然后在一起放入数据库。
def add(request): Booklist = [] for i in range(100): book_obj=models.Book(title="book" + str(i), price=60 + i * i) Booklist.append(book_obj) models.Book.objects.bulk_create(Booklist)
先引用一个变量:
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
paginator(book_list,8)
# book_list:是你要分页的数据
# 8: 每页数据的条数
‘‘‘ 分页器的使用: book_list=Book.objects.all() paginator = Paginator(book_list, 10) print("count:",paginator.count) #数据总数 print("num_pages",paginator.num_pages) #总页数 print("page_range",paginator.page_range) #页码的列表 page1=paginator.page(1) #第1页的page对象 for i in page1: #遍历第1页的所有数据对象 print(i) print(page1.object_list) #第1页的所有数据 page2=paginator.page(2) print(page2.has_next()) #是否有下一页 print(page2.next_page_number()) #下一页的页码 print(page2.has_previous()) #是否有上一页 print(page2.previous_page_number()) #上一页的页码 # 抛错 #page=paginator.page(12) # error:EmptyPage #page=paginator.page("z") # error:PageNotAnInteger ‘‘‘
可以利用bootstrap来进行样式改:
怎么遍历显示图标数字:
{% for i in page_range %} <li><a href="/?p={{i}}">{{i}}></a></li> {% endfor %} shangyiye: xiayiye:
标签:结果 values djang foreign ext too length 名称 empty
原文地址:http://www.cnblogs.com/sexiaoshuai/p/7928578.html