python - 如何获得Python的等价物[:-1] in django ORM?

标签 python django django-models

我正在编写一个 Django 应用程序,我想从查询中获取除最后一个之外的所有项目。我的查询是这样的:

objects = Model.objects.filter(name='alpha').order_by('rank')[:-1]

但它抛出错误:

Assertion Error: Negative indexing not supported.

知道我哪里出错了吗?

如有任何建议,我们将不胜感激。

最佳答案

您可以使用QuerySet.last()获取最后一个并使用其 id 将其从结果中排除。

objects = Model.objects.filter(name='alpha').order_by('rank')
last = objects.last()
objects = objects.exclude(pk=last.pk)

从结果中排除所有在数据库中找到的最小值排名的对象的查询:

objects = Model.objects.annotate(
    mini_rank=Min('rank'),         # Annotate each object with the minimum known rank
).exclude(
    mini_rank=F('rank')            # Exclude all objects ranked with the minimum value found   
)

关于python - 如何获得Python的等价物[:-1] in django ORM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54393691/

相关文章:

python - 从数据库层次结构中的 Django 父表获取数据

python - 如何在 Django 模型中使用枚举作为选择字段

python - Keras:如何在顺序模型中获取图层形状

python - 使用scrapy点击网站上的按钮

python - 如何告诉 IDE 一个方法返回一个仅包含 Python 中特定类型对象的列表?

python - 属性错误 : module 'django.db.models' has no attribute 'RegexField' . python (django)

python - 文件搜索: TypeError

python - render_to_response 中传递的字典范围

django - 如何将过滤器关键字上的字符串传递给 Django 对象模型?

python - Foo.objects.get(id=None) 返回 Foo 实例,有时