django

Django-14 ORM 普通查询,条件查询,查询谓词

2021-07-14  本文已影响0人  JuliusL

1. 普通查询

方法 说明
all() 查询全部记录,返回QuerySet查询对象
get() 查询符合条件的单一记录
filter() 查询符合条件的多条记录
exclude() 查询符合条件之外的全部记录
...

用法:MyModel.objects.all()
作用:查询MyModel实体中的所有的数据
等同于select * from table
返回值:QuerySet容器对象,内部存放MyModel实例

from bookstore.models import Book
books = Book.objects.all()
from book in books:
  print('书名',book.title,'出版社',book.pub)

tips:_str_类似java的toString(),可以打印对象的时候更友好

用法:MyModel.objects.values('列1','列2')
作用:查询部分列的数据并返回
等同于select 列1,列2 from table
返回值:QuerySet
- 返回查询结果容器,容器内存字典,每一个字典代表一条数据,格式为:{'列1':'值1','列2':'值2'}

>>> a2 = Book.objects.values('title','pub')
>>> a2
<QuerySet [{'title': 'Python', 'pub': '清华大学出版社'}, {'title': 'Django', 'pub': '清华大学出版社'}]>

用法:MyModel.objects.values_list('列1','列2')
作用:返回元组形式的查询结果
等同于select 列1,列2 from table
返回值:QuerySet,容器内存'元组'
- 会将查询出来的数据封装到元组中,再封装到查询集合QuerySet中

>>> a2 = Book.objects.values_list('title','pub')
>>> a2
<QuerySet [('Python', '清华大学出版社'), ('Django', '清华大学出版社')]>
>>> a2 = Book.objects.values_list('title','pub').order_by('-price')
>>> a2
<QuerySet [('Django', '清华大学出版社'), ('Python', '清华大学出版社')]>

tips:用 querySet对象.query可以反查出SQL的语句

>>> print(a2.query)
SELECT `book`.`title`, `book`.`pub` FROM `book` ORDER BY `book`.`price` DESC

测试用例:

image.png
<body>
<table border="1">
    <tr>
        <th>id</th>
        <th>title</th>
        <th>pub</th>
        <th>price</th>
        <th>market_price</th>
        <th>op</th>
    </tr>
    {% for book in all_book %}
    <tr>
        <th>{{book.id}}</th>
        <th>{{book.title}}</th>
        <th>{{book.pub}}</th>
        <th>{{book.price}}</th>
        <th>{{book.market_price}}</th>
        <th>
            <a href="">更新</a>
            <a href="">删除</a>
        </th>
    </tr>
    {% endfor %}
</table>
</body>
def all_book(request):
    all_book = Book.objects.all()
    return render(request,'bookstore/all_book.html',locals())
urlpatterns = [
  path('bookstore/',include('bookstore.urls')),
]
urlpatterns = [
    path('all_book',views.all_book)
]

2. 条件查询

3. 查询谓词(非等值的过滤查询)

上一篇下一篇

猜你喜欢

热点阅读