Vague knowledge django query, filter (blog = blog), filter (username = username) .first () - both just a trick to make you distinguish QuerySet object, objects and user dictionary


Just a trick to make you distinguish QuerySet object, objects and user dictionary

= models.Article.objects.filter article_list (Blog = Blog)
USER_OBJ = models.Userinfo.objects.filter (username = username) .first ()
two queries above do not understand

article_list is iterable QuerySet objects, support for loop

user_obj the user dictionary object is not supported for loop

All supported data types for recycling must be iterative data type! ! !

Discover all the current article at customer site

    article_list = models.Article.objects.filter(blog=blog).first()
    所有支持for循环的数据类型必须是可迭代数据类型,
    字典不可迭代,所以for循环取值会报错:TypeError: 'Article' object is not iterable,
    所以article_list必须是可以迭代的对象,QuerySet对象可以迭代,是可迭代对象,
    那么就要把.first()给去掉

Here is the E drive ------------------ practice by themselves their own way day53 courseware summed up ----------------- ----------

filter () can be obtained QuerySet object iterative loop for taking support elements within the container, it is recommended in the django

2.filter () can be obtained QuerySet object iterative loop for taking support elements within the container, it is recommended in the django

    #filter其实就是 筛选功能,相当于你原生sql语句里面的where关键字,返回的结果queryset对象
    res=models.Books.objects.filter(pk=1,title='张三丰') #支持多个参数,and关系
    print(res)      #<QuerySet [<Books: 张三丰>]>
    print('************************')

# 3.get()    在django中不推荐使用
    # 筛选,获取的是数据对象本身,条件不存在的数据直接报错,并且查询条件必须是唯一的
    res=models.Books.objects.get(title='西游记')
    print(type(res))      #如果是数据库中不存在的数据进行查询的话,会报错,因为数据库中没有该数据
    print('//////////////////////////')
-----------------------------------------------------------------------------------------------------------------------------------
打印结果如下:
    <QuerySet [<Books: 张三丰>]>
    ************************
    <class 'app01.models.Books'>
    //////////////////////////
    (0.001) SELECT `app01_books`.`id`, `app01_books`.`title`, `app01_books`.`price`, `app01_books`.`kucun`, `app01_books`.`maichu` FROM `app01_books` WHERE `app01_books`.`price` = 766 LIMIT 21; args=(Decimal('766'),)
    <QuerySet [<Books: 西游记>, <Books: 西游记2>]>
    <class 'django.db.models.query.QuerySet'>
    ************************
    西游记
    1000
    <class 'app01.models.Books'>
    (0.001) SELECT `app01_books`.`id`, `app01_books`.`title`, `app01_books`.`price`, `app01_books`.`kucun`, `app01_books`.`maichu` FROM `app01_books` WHERE `app01_books`.`price` = 766 ORDER BY `app01_books`.`id` ASC LIMIT 1; args=(Decimal('766'),)

////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////

4.first()

    #功能一, 取queryset 相同数据中的第一个数据对象,

    # id=3,title='西游记'  id=5,title='西游记2',加上.first()会优先取id=3的数据
    res = models.Books.objects.filter(price='766')
    print(res)
    print(type(res))
    
    打印结果如下:
    <QuerySet [<Books: 西游记>, <Books: 西游记2>]>        如果上面加上.first()就会只取到第一个值 <QuerySet [<Books: 西游记>]> 
    <class 'django.db.models.query.QuerySet'>

    重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点重点
                    
                                特殊功能如下:
        
    
# .first()特殊的功能可以把QuerySet对象转换为字典对象,方便字典对象点属性取值------------88颗星的重点

    res = models.Books.objects.filter(price='766').first()
    print(res)
    print(res.kucun)    通过字典对象,拿到该书的库存
    print(type(res))

打印结果如下:

    西游记
    1000
   <class 'app01.models.Books'>  

Guess you like

Origin www.cnblogs.com/ludundun/p/12074794.html