- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
限制 Django 查询集返回的结果集的方法是通过数组切片完成的。例如获取前5个人:
People.objects.all()[0:5]
或者,让它们按名称排序:
People.objects.order_by(name)[0:5]
或按姓名排序,但仅限 65 岁以上的人:
People.objects.order_by(name).filter(age__gt=65)[0:5]
事实上,我能想到的唯一在查询集上没有函数的事件是有限的。
我想知道的是,是否有一种方法(内部的、文档化的或其他方式)可以在充当限制或切片的 QuerySet
上调用?如果不是,执行此操作的最佳方法是什么?
注意事项:
Do
results[:max_count]
in a view, after.order_by()
.
最佳答案
查看 Django Querysets, its not as blackboxy 的代码看起来
def __getitem__(self, k):
"""
Retrieves an item or slice from the set of results.
"""
# ... trimmed ...
if isinstance(k, slice):
qs = self._clone()
if k.start is not None:
start = int(k.start)
else:
start = None
if k.stop is not None:
stop = int(k.stop)
else:
stop = None
qs.query.set_limits(start, stop)
return list(qs)[::k.step] if k.step else qs
qs = self._clone()
qs.query.set_limits(k, k + 1)
return list(qs)[0]
关键行在这里:
qs.query.set_limits(start, stop)
slice 是惰性的原因是因为它只接受 start
和 stop
值并将它们传递给另一个方法。
Which corresponds to a call to the sql.Query object here:
def set_limits(self, low=None, high=None):
因此可以(尽管可能不推荐)像这样对查询集进行切片:
people = People.objects.order_by(name).filter(age__gt=65) # unevaluated
people.query.set_limits(start, stop) # still unevaluated
for person in people: # now its evaluated
person.do_the_thing()
关于python - 限制来自 Django QuerySet 的结果数量,而不使用切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29360146/
我正在这里使用这些模型开展一个小项目,我正在尝试找出一种方法来获取一组与当前经过身份验证的用户正在关注的用户关联的所有帖子。 但我不断得到: Cannot use QuerySet for "Prof
基本上我需要一种优雅的方式来执行以下操作:- obj1 = Model1.objects.select_related('model2').get(attribute1=value1) obj2 =
我想知道在删除查询集中的对象时迭代 Django 查询集的最佳方法是什么?例如,假设您有一个包含特定时间条目的日志表,并且您希望将它们存档,以便每 5 分钟不超过 1 个条目。我知道这可能是错误的,但
我今天发现我可以通过索引引用它们来访问查询集中的元素,即 queryset[n] .然而,紧接着我发现queryset[0]不返回与 queryset.first() 相同的记录.为什么会这样,并且是
我看到 QuerySet 类有 2 个不同的方法似乎服务于相同的目的(除非我弄错了):.__nonzero__ 和 .exists 。 (是的,我知道 .__nonzero__ 被 bool 使用。)
我怎样才能让下面的东西起作用? player = Player.objects.get(pk=player_id) game = Game.objects.get(pk=game_id) game_p
我正在使用 Django 1.6 并有如下问题陈述: 假设有两个模型,作者和书籍,那么作者和书籍模型显然是一对多的关系。 现在,我需要显示作者的数据,以便他写的每本书都有一行。 由于 UI 部分在主干
我真的不明白是什么导致了错误我检查了文档,这里有一个非常相似的例子是我的 views.py,我使用的应用程序下的 urls.py 包含,以及模板 View .py class SchoolListVi
几个月来我一直有一个间歇性的错误,我被卡住了!帮助表示赞赏。 class ContentFile(models.Model): """ Represents the metadata
我有几个模型,想要返回属于一个用户的所有模型的查询集,我想知道是否可以从多个模型返回一个查询集? 最佳答案 我假设您的意思是您想从每个模型返回属于用户的所有对象的单个查询集。 你需要一个查询集还是一个
我试图从两个没有外键关系的表中获取结果,只是想知道我使用的方法是否正确。 django.db import models django.contrib.auth.user import User cl
根据 Django REST framework documentation ,以下两个代码片段的行为应该相同。 class UserViewSet(viewsets.ViewSet): ""
我已经在models.py中编写了这些模型: 类User(models.Model): first_name = models.CharField(最大长度= 80) 类Skill(models.Mo
如何在单个表达式中从多对一关系的过滤结果中获取最新值以注释 Django QuerySet? 给定这个玩具模式: from django.db import models class Lorem(mo
我看到很多类似的查询,但似乎没有一个能满足我的需求, 我有一个这样的表: class BGPData(models.Model): subnet = models.ForeignKey(Sub
请问我为什么在我的模板中显示“fav”时收到此错误消息 QuerySet object has no attribute game_id 我试图更换 game_id来自 game , id_game但
我想从字面上将字符串添加到查询集对象。为什么,因为我将它发送到 JSON,将信息放在那里并使其可用而无需遍历查询集将其转换为自定义字典,这将非常好和干净。 我现在所拥有的: a_vote_set.ag
给定一个模型 class Entity(models.Model): identifier = models.IntegerField() created = models.Integ
我的一些对象管理器中有一个方法,它从数据库中获取数据: def products(self, offset=None) 如果没有 offset通过,它只是返回所有对象(大约 5000 个,没有那么多)
我在 StorySerializer 中的 GET/api/stories/169/ 上收到以下错误,如下评论中所述: AttributeError at /api/stories/169/ 'Man
我是一名优秀的程序员,十分优秀!