django-orm查询操作

django-orm查询操作

In [19]: from bookstore.models import Book

In [20]: a1=Book.objects.all()

In [21]: a1
Out[21]: <QuerySet [<Book: Book object (1)>, <Book: Book object (2)>, <Book: Book object (3)>, <Book: Book object (4)>, <Book: Book object (5)>]>

In [22]: #类数组

In [23]: for book in a1:
    ...:     print(book.title)
    ...:
python
Django
JQury
Linux
HTML5

进一步显示book对象

In [1]: from bookstore.models import Book

In [2]: b1=Book.objects.all()

In [3]: b1
Out[3]: <QuerySet [<Book: python_清华大学出版社_20.00_25.00>, <Book: Django_清华大学出版社_70.00_75.00>, <Book: JQury_机械工业出版社_90.00_85.00>, <Book: Linux_机械工业出版社_80.00_65.00>, <Book: HTML5_清华大学出版社_90.00_105.00>]>

按字段取数据

In [3]: b1
Out[3]: <QuerySet [<Book: python_清华大学出版社_20.00_25.00>, <Book: Django_清华大学出版社_70.00_75.00>, <Book: JQury_机械工业出版社_90.00_85.00>, <Book: Linux_机械工业出版社_80.00_65.00>, <Book: HTML5_清华大学出版社_90.00_105.00>]>

In [5]: b1.values('title')
Out[5]: <QuerySet [{'title': 'Django'}, {'title': 'HTML5'}, {'title': 'JQury'}, {'title': 'Linux'}, {'title': 'python'}]>

In [6]: b2=Book.objects.values('title','pub')

In [7]: b2
Out[7]: <QuerySet [{'title': 'python', 'pub': '清华大学出版社'}, {'title': 'Django', 'pub': '清华大学出版社'}, {'title': 'JQury', 'pub': '机械工业出版社'}, {'title': 'Linux', 'pub': '机械工业出版社'}, {'title': 'HTML5', 'pub': '清华大学出版社'}]>
In [9]: for i in b2:
   ...:     print(i['title'],i['pub'])
   ...:
   ...:
python 清华大学出版社
Django 清华大学出版社
JQury 机械工业出版社
Linux 机械工业出版社
HTML5 清华大学出版社

In [10]: b3=Book.objects.values_list('title')

In [11]: b3
Out[11]: <QuerySet [('Django',), ('HTML5',), ('JQury',), ('Linux',), ('python',)]>

In [12]: for i in b3:
    ...:     print(i)
    ...:
('Django',)
('HTML5',)
('JQury',)
('Linux',)
('python',)

In [13]: b4=Book.objects.values_list('title','pub')

In [14]: for i in b4:
    ...:     print(i)
    ...:
('python', '清华大学出版社')
('Django', '清华大学出版社')
('JQury', '机械工业出版社')
('Linux', '机械工业出版社')
('HTML5', '清华大学出版社')

根据字段排序

In [15]: b5=Book.objects.order_by('-price')

In [16]: b5
Out[16]: <QuerySet [<Book: JQury_机械工业出版社_90.00_85.00>, <Book: HTML5_清华大学出版社_90.00_105.00>, <Book: Linux_机械工业出版社_80.00_65.00>, <Book: Django_清华大学出版社_70.00_75.00>, <Book: python_清华大学出版社_20.00_25.00>]>

针对Queryset对象灵活使用vaules、values_list、order_by

In [17]: b6=Book.objects.values('title').order_by('-price')

In [18]: b6
Out[18]: <QuerySet [{'title': 'JQury'}, {'title': 'HTML5'}, {'title': 'Linux'}, {'title': 'Django'}, {'title': 'python'}]>

queryset query属性获取sql语句


In [19]: b6.query
Out[19]: <django.db.models.sql.query.Query at 0x1ded56f3cd0>

In [20]: print(b6.query)
SELECT `Book`.`title` FROM `Book` ORDER BY `Book`.`price` DESC

views.py

def all_book(request):
    all_book=Book.objects.all()
    return render(request,'bookstore/all_book.html',locals())

all_book.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>显示所有书籍</title>
</head>
<body>
    <table border="1">
        <tr>
            <th>id</th>
            <th>title</th>
            <th>pu</th>
            <th>price</th>
            <th>market_price</th>
            <th>op</th>
        </tr>
        {%  for info in  all_book %}
        <tr>           
             <td>{{info.id}}</td>
             <td>{{info.title}}</td>   
            <td>{{info.pub}}</td>
            <td>{{info.price}}</td>

            <td>{{info.market_price}}</td>           
            <td>
                <a href="">更新</a>
                <a href="">删除</a>

            </td>
        </tr>
        {% endfor %}

    </table>
</body>
</html>

页面显示

image


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>显示所有书籍</title>
</head>
<body>
    <table border="1">
        <tr>
            <th>id</th>
            <th>title</th>
            <th>pu</th>
            <th>price</th>
            <th>market_price</th>
            <th>op</th>
        </tr>
        
        <tr>
            
             <td>1</td>
             <td>python</td>   
            <td>清华大学出版社</td>
            <td>20.00</td>

            <td>25.00</td>
           
            <td>
                <a href="">更新</a>
                <a href="">删除</a>

            </td>
        </tr>
        
        <tr>
            
             <td>2</td>
             <td>Django</td>   
            <td>清华大学出版社</td>
            <td>70.00</td>

            <td>75.00</td>
           
            <td>
                <a href="">更新</a>
                <a href="">删除</a>

            </td>
        </tr>
        
        <tr>
            
             <td>3</td>
             <td>JQury</td>   
            <td>机械工业出版社</td>
            <td>90.00</td>

            <td>85.00</td>
           
            <td>
                <a href="">更新</a>
                <a href="">删除</a>

            </td>
        </tr>
        
        <tr>
            
             <td>4</td>
             <td>Linux</td>   
            <td>机械工业出版社</td>
            <td>80.00</td>

            <td>65.00</td>
           
            <td>
                <a href="">更新</a>
                <a href="">删除</a>

            </td>
        </tr>
        
        <tr>
            
             <td>5</td>
             <td>HTML5</td>   
            <td>清华大学出版社</td>
            <td>90.00</td>

            <td>105.00</td>
           
            <td>
                <a href="">更新</a>
                <a href="">删除</a>

            </td>
        </tr>
        



    </table>
</body>
</html>

原文地址:https://www.cnblogs.com/yescarf/p/15120109.html