首页
学习
活动
专区
圈层
工具
发布

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

使用with模板标签 在模板中使用QuerySet缓存,需要使用with标签 使用iterator() 获取大量数据时 news_list = News.objects.filter(title__contains...在同一模型中使用不同字段进行对比过滤 # 查询所有title和sub_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() 批量删除使用

78410

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是惰性执行的,这意味着它们在真正需要数据时才会执行查询。

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

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

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

    1.5K30

    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的所有字段,并不会返回关联表字段值,只有当我们使用关联表时才会再查数据库返回

    3.5K30

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

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

    95520

    Django模型开发:模型字段、元数据与继承全方位讲解

    一、模型字段类型详解在 Django 开发中,模型(Model)是连接应用程序与数据库的核心桥梁。...Django 与 MySQL 字段类型映射Django 模型的每个字段都是特定 Field 类的实例,它决定了数据库存储类型和表单验证规则。...' # 数据库表注释help_text:表单帮助文本db_comment: 数据库字段注释默认值设置# 固定默认值count = models.IntegerField(default=0)# 可调用对象作为默认值...(auto_now=True)注意:auto_now在QuerySet.update()时不会自动生效,需手动更新或使用save()auto_now_add、auto_now 和 default 选项相互排斥...模型管理器只能通过模型类来访问,一般用于“表级”操作# 表级操作all_users = User.objects.all()active_users = User.objects.filter(is_active

    21410

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

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

    2.6K40

    07-02 django 6-10

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

    83440

    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() 子句的使用顺序是非常重要的。

    2.3K30
    领券