栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django:将博客条目视图增加1。这样有效吗?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django:将博客条目视图增加1。这样有效吗?

您可以

F()
为此使用对象。

这是您的导入方式

F
from django.db.models import F

Django
1.1的新功能

调用更新也可以使用F()对象根据模型中另一个字段的值来更新一个字段。这对于基于计数器的当前值递增计数器特别有用。

Entry.objects.filter(is_published=True).update(views=F('views')+1)

尽管您无法对切片查询集进行更新… 编辑:实际上您可以…

这可以完全在Django ORM中完成。您需要两个SQL查询:

  1. 进行过滤并收集主键列表
  2. 对与任何这些主键匹配的项的非切片查询集进行更新。

获取未切片的查询集是很困难的。我想知道如何使用

in_bulk
它,但是返回的是字典,而不是查询集。人们通常会使用它
Qobjects
来执行复杂的OR类型查询,这可以工作,但
pk__in
工作却简单得多。

latest_entry_ids = Entry.objects.filter(is_published=True)     .order_by('-date_published')     .values_list('id', flat=True)[:10]  non_sliced_query_set = Entry.objects.filter(pk__in=latest_entry_ids)  n = non_sliced_query_set.update(views=F('views')+1)  print n or 0, 'items updated'

由于django懒惰地执行查询的方式,无论更新多少项目,这只会导致2次数据库命中。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/639000.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号