【问题标题】:Best way to get every Xth id from Django model?从 Django 模型中获取每个 Xth id 的最佳方法?
【发布时间】:2014-10-24 19:41:42
【问题描述】:

我需要能够从 Django 模型中获取每个(例如)第 100 个 id。到目前为止,我发现这样做的唯一方法如下:

ids = MyModel.objects.values_list('id', flat=True)[::100]

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: python django model


    【解决方案1】:

    您可以使用wheremodulo 运算符。

    MyModel.objects.extra(where=["id %% 100 == 0"]).values_list('id', flat=True)
    

    双 % 是因为我们需要对其进行转义,因为它是参数的保留字符。

    【讨论】:

    • 这是 Python 意义上的“更好”的更好方法吗?另外,这在速度方面如何?这会比我上面列出的方式更快吗?感谢您的输入:D
    • 对我来说这不是很“Django-y”,因为它可能是特定于数据库的。我知道它适用于 Postgres,我会假设 MySQL,但我不知道其余的。但是,就速度而言,这更快,因为它在数据库级别而不是在应用程序/python 级别进行过滤。
    猜你喜欢
    • 2011-01-05
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    • 2013-12-20
    • 2018-07-02
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多