只需一招让你分清QuerySet对象,和用户字典对象

article_list = models.Article.objects.filter(blog=blog)

user_obj = models.Userinfo.objects.filter(username=username).first()

上面的两个查询不太懂

article_list是可迭代的QuerySet对象,支持for循环

user_obj这个是用户字典对象,不支持for循环

所有支持for循环的数据类型必须是可迭代数据类型!!!

查询当前用户站点下的所有文章

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

------------------这里是通过E盘自己练习的day53课件自己摸索总结出来的---------------------------

filter() 得到可迭代的QuerySet对象,支持for循环取容器内的元素,在django中推荐使用

2.filter() 得到可迭代的QuerySet对象,支持for循环取容器内的元素,在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'>

django查询中模糊的知识点,filter(blog=blog),filter(username=username).first()--这两者只需一招让你分清QuerySet对象,和用户字典对象的更多相关文章

  1. django QuerySet对象转换成字典对象

    >>> from django.contrib.auth.models import User >>> from django.forms.models impor ...

  2. django查询集API

    本节将详细介绍查询集的API,它建立在下面的模型基础上,与上一节的模型相同: from django.db import models class Blog(models.Model): name = ...

  3. 关于Django查询知识点总结

    ========关于Django查询知识点总结======= models.Book.objects.filter(**kwargs): querySet [obj1,obj2] models.Boo ...

  4. django 数据库查询的几个知识点

    django查询db过程中遇到的几个问题: 1. 数据库切换,用using products = models.TProductCredit.objects.using(') 2.查询结构集是Quer ...

  5. django 模型类的常见字段约束,以及filter 过滤和查询

    null 不设置时默认设置为False.设置为True时,数据库表字段中将存入NULL的记录. null和blank组合使用,null=True,blank=True,表示该字段可以为空 blank ...

  6. Django查询一个权限中包含哪些用户

    Django查询一个权限中包含哪些用户 Django的Permission对象中没有直接查询相关用户的信息,而都是通过User对象来查询某个用户有哪些权限,例如: user.objects.get(u ...

  7. python3开发进阶-Django框架中的ORM的常用操作的补充(F查询和Q查询,事务)

    阅读目录 F查询和Q查询 事务 一.F查询和Q查询 1.F查询 查询前的准备 class Product(models.Model): name = models.CharField(max_leng ...

  8. hibernate -- 分页模糊查询中setParameter 和setParameterList

    在分页模糊查询中碰到setParameter 和setParameterList这两个方法 setParameter 以前就只会用setParameter(int arg,String str),我用 ...

  9. Django数据查询中对字段进行排序

    Django数据查询中对字段进行排序   第一种方法:使用order_by进行排序 Articlelist = Article.objects.filter(**kwargs).order_by('n ...

随机推荐

  1. Java中的继承、封装、多态的理解

    Java中的继承.封装.多态 继承的理解: 1.继承是面向对象的三大特征之一,也是实现代码复用的重要手段.Java的继承具有单继承的特点,每个子类只有一个直接父类. 2.Java的继承通过extend ...

  2. Stream系列(七)distinct方法使用

    EmployeeTestCase.java package com.example.demo; import lombok.Data; import lombok.ToString; import l ...

  3. Spring-boot(一)通过向导快速创建Spring-boot项目

    通过向导快速创建Spring-boot项目 创建步骤: 选择Spring Initializr 填写组织和模块名 选择对应的模块 注:这里左侧的模块比较多,玩家可以根据自己的实际需要自由选择,此处暂时 ...

  4. 请求库urllib和urllib3

    # coding=utf-8 # urllib """ 使用python的urllib库去模拟浏览器请求网页,常用内容如下: urllib.request 发送HTTP请 ...

  5. python内置的进制转换方法

    python进制转换方法总结表: ↓ 2进制 8进制 10进制 16进制 2进制 - bin(int(x, 8)) bin(int(x, 10)) bin(int(x, 16)) 8进制 oct(in ...

  6. 【前端】之jQuery基础知识

    jQuery 简介 在项目中引入jQuery: 去jQuery官网下载jQuery包:jquery-3.2.1.min.js 将下载的jQuery包添加到项目目录中 在标签下添加jQuery引用:&l ...

  7. Vue.js 控制css样式

    <script src="https://unpkg.com/vue/dist/vue.js"></script> <style type=" ...

  8. 使用echarts常用问题总结

    1,echarts配合element ui的抽屉插件出现报错,上次解决方法是使用element ui 抽屉的open事件,让在打开事件重新加载,我们项目的需求是点击某个数据,要传递这条数据包含的其他值 ...

  9. nginx代理跨域,根据路径参数改变目标服务器地址

    我们都知道nginx是可以做跨域代理的: location ^~ /visited-path/ { proxy_pass http://another-domain/; } 举个例子:假如我们的代理服 ...

  10. 有趣的css3实战案例剖析—(背景动态渐变)

    对于css3的学习,更多的是在于对新特性和基础理论的熟悉,这篇文章通过一个案例带领大家了解css3里一些理论知识,也将一些技巧加以总结,从而提高大家的开发效率: 本次案例为(背景颜色渐变),运用css ...