首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅谈django使用filter()(即对QuerySet操作)踩的坑

例如有Book表,其包含bookname,booknum两个属性, 如何使用Objects.all(),得到booknamebooknum的值 (2)filter() 返回的是QuerySet对象,与...= content2 message.message_type = message_type2 message.save() 补充知识:Django filterget的个人体会 开发环境...:Ubuntu16.04+Django 1.11.9+Python2.7 filter返回的QuerySet: filter返回的是QuerySet,可以切片以及遍历,get则不行.因为get只能获取唯一存在的数据...没有符合条件的值的时候: get会报错 Book matching query does not exist. filter返回一个空列表,并不会报错....中使用filter()(即对QuerySet操作)踩的坑就是小编分享给大家的全部内容了,希望能给大家一个参考。

4K10

翻译了Django1.4数据库访问优化部分

使用with模板标签 模板中使用QuerySet缓存,需要使用with标签 使用iterator() 获取大量数据 news_list = News.objects.filter(title__contains...同一模型中使用不同字段进行对比过滤 # 查询所有titlesub_title相同的数据 queryset = News.objects.filter(title=F('sub_title')) 使用...()类似,针对many-to-many 不要获取你不需要的数据 使用 QuerySet.values() values_list() 当只需要一个字段的值,返回list或者dict使用 values...不要过度使用 count() exists() 比如,假设有一个Email的model,有一个 body 的属性一个多对多关系的User 属性,下面的模板代码是最优的: {% if display_inbox...with的使用是关键 每次的QuerySet.count()调用都会产生查询 使用 QuerySet.update() delete() 批量更新使用 QuerySet.update() 批量删除使用

62110
您找到你想要的搜索结果了吗?
是的
没有找到

Django Admin后台管理:高效开发与实践

1.2 安装配置Django 安装Django:首先确保你的Python环境已经安装了pip,然后命令行中运行pip install Django。...创建新项目:命令行中,使用django-admin startproject project_name命令创建一个新的Django项目。...2.3 字段字段集的管理 字段管理:可以Admin类中使用fields或fieldsets属性来控制编辑页面中字段的显示。...用户模型:Django提供了一个默认的用户模型,包含用户名、密码电子邮件等字段。 3.2 用户、组权限的管理 用户管理:Django Admin中,可以创建、编辑删除用户。...链式调用:QuerySet支持链式调用,可以一个语句中执行多个查询操作。 惰性执行:QuerySet是惰性执行的,这意味着它们真正需要数据才会执行查询。

7510

django 1.8 官方文档翻译: 2-6-4 数据库访问优化

考虑在你经常使用filter()、exclude()、order_by()其它方法查询的字段上面添加索引,因为索引有助于加速查找。...如果你不能够合理地使用这些函数,不如不用。 另外,当建立起一个带有延迟字段的模型,要意识到一些(小的、额外的)消耗会在Django内部产生。...defer()only()方法在你可以避免加载大量文本数据,或者可能要花大量时间处理而返回给Python的字段,特别有帮助。像往常一样,应该先写出个大概,之后再优化。...但是: 不要过度使用 count() exists() 如果你需要查询集中的其他数据,就把它加载出来。...使用QuerySet.update()delete() 通过QuerySet.update()使用批量的SQL UPDATE语句,而不是获取大量对象,设置一些值再单独保存。

1.1K30

Django学习笔记之Queryset详解

e in a: print (e.blog.name) len(l) 遍历时,每次都要查询数据库,l长度每次增1,Django提供了方法可以查询返回关联表实体,如果是onetoone...可以使用双下划线对OneToOne、OneToMany、ManyToMany进行关联查询反向关联查询,方法与filter()中的使用方法相同。...Q对象也很简单,就是把原来filter中的各个条件分别放在一个Q()即可,不过我们还可以使用或与非,分别对应符号为”|””&””~”,而且这些逻辑操作返回的还是一个Q对象,另外,逗号是各组条件的基本连接符...Author.objects.filter(**kwargs)对应的SQL只返回主表(即Author表)的所有字段值,即使查询关联了其它表,关联表的字段也不会返回,只有当我们通过Author instance...前面提到了对于a = Author.objects.filter(**kwargs)这类语句,对应的SQL只返回主表,即Author的所有字段,并不会返回关联表字段值,只有当我们使用关联表才会再查数据库返回

2.7K30

django 1.8 官方文档翻译:7-2 管理操作

在这些例子中,Django管理后台可以让你实现注册“操作” —— 仅仅只是一个以已选中对象集合为参数的回调函数。 Django自带的管理页面中都能看到这样的例子。...例如,下面是 django.contrib.auth app Django’s创建的用户模型: 警告 “删除所选对象”的操作由于性能因素使用了QuerySet.delete(),这里有个附加说明:它不会调用你模型的...操作中处理错误 如果你预见到,运行你的操作可能出现一些错误,你应该以优雅的方式向用户通知这些错误。...也就是说,异常处理使用django.contrib.admin.ModelAdmin.message_user()可以响应中展示用户友好的问题描述。...大多数情况下,最佳实践是返回 HttpResponseRedirect,并且使用户重定向到你编写的视图中,向GET查询字符串传递选中对象的列表。这需要你中间界面上提供复杂的交互逻辑。

69620

Django】聚合在Django的详细解析以及运用在企业级项目里的方法

本主题指南介绍如何使用Django查询生成返回聚合值。...使用后,它将返回一个“name value”字典,其中“name”是聚合值的标志,“value”是计算的聚合结果。名称是根据字段名称聚合函数自动生成的。...聚合函数中指定聚合字段Django允许您在筛选相关字段使用相同的双下划线符号。Django将处理需要检索聚合相关值的任何表连接。...(num_authors=Count('authors')) annotate()filter()子句的顺序¶ 开发涉及annotate()filter()子句的复杂查询,请特别注意应用于QuerySet...当注释()子句应用于查询,将根据查询状态计算注释,直到请求的注释。这实际上意味着filter()annotate()不是可互换的操作。 例如: 出版商A有两本评分为45的书。

2K40

07-02 django 6-10

1. sum count max min avg aggregate:调用这个函数来使用聚合。...uwsgi服务器根据自身的uwsgiWSGI协议,找到对应的Django框架,Django框架下的应用进行逻辑处理后,将返回值发送到uwsgi服务器,然后uwsgi服务器再返回给nginx,最后nginx...1.设计表,尽量少使用外键,因为外键约束会影响插入删除性能; 2.使用缓存,减少对数据库的访问; 3.orm框架下设置表,能用varchar确定字段长度,就别用text; 4.可以给搜索频率高的字段属性...,定义创建索引; 5.Django orm框架下的Querysets 本来就有缓存的; 6.如果一个页面需要多次连接数据库,最好一次性取出所有需要的数据,减少对数据库的查询次数; 7.若页面只需要数据库里某一个两个字段...,可以用QuerySet.values(); 8.模板标签里使用with标签可以缓存Qset的查询结果。

69140

django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)

Practical Django Projects> >>> q[1].authors__count 1 使用 aggregate()一样,注解的名称也根据聚合函式的名称聚合字段的名称得到的。...聚合函式中指定聚合字段Django 允许你使用同样的 双下划线 表示关联关系,然后 Django 就会处理要读取的关联表,并得到关联对象的聚合。...name__startswith="Django").annotate(num_authors=Count('authors')) 使用aggregate()子句,过滤器有限制聚合对象的作用。...像使用其他模型字段一样,注解也可以filter()exclude() 子句中使用别名。...annotate() 的顺序 使用 filter() 子句一样,作用于某个查询的annotate() values() 子句的使用顺序是非常重要的。

1.6K30

开撸!SpringBoot-表单验证-统一异常处理-自定义验证信息源

当在controller中校验表单数据,如果使用了groups,那么没有在这个分组下的属性是不会校验的 3.1 添加分组接口 /** * 用于表单验证的通用分组接口 * @author ludangxin...extends Payload>[] payload() default {}; //指定多个使用 @Target({FIELD, METHOD, PARAMETER, ANNOTATION_TYPE...调用过程验证 有的时候我们参数传输过程中需要对传入的对象做参数验证,但是上面介绍的都是对参数绑定时的验证,那能不能使用validation进行验证呢? 答案肯定是可以的。...5.1 使用 spring bean 5.1.1 注入validator bean validator 是我们config文件中定义的bean,如果使用了springboot默认的配置ValidationAutoConfiguration...甚至step 5,6都是直接将异常的堆栈信息返回给前端,这对于用来说是非常不友好的。而且有的情况下需要我们主动抛出业务异常,比方用户不能直接删除已绑定用户的角色。 所以,开撸。

2.2K30
领券