python - 如何使用 Django 的 ORM 提取随机记录?

标签 python django django-models

我有一个模型来代表我在我的网站上展示的画作。在主网页上,我想展示其中的一些:最新的、大部分时间未访问的、最受欢迎的和随机的。

我正在使用 Django 1.0.2。

虽然前 3 个使用 django 模型很容易提取,但最后一个(随机)给我带来了一些麻烦。在我看来,我可以将其编码为如下所示:

number_of_records = models.Painting.objects.count()
random_index = int(random.random()*number_of_records)+1
random_paint = models.Painting.get(pk = random_index)

它看起来不像我想要的东西 - 这完全是数据库抽象的一部分,应该在模型中。另外,在这里我需要处理已删除的记录(然后所有记录的数量不会涵盖所有可能的键值)以及可能还有很多其他事情。

我可以如何做到这一点的任何其他选项,最好是在模型抽象中以某种方式?

最佳答案

简单使用:

MyModel.objects.order_by('?').first()

它记录在 QuerySet API .

关于python - 如何使用 Django 的 ORM 提取随机记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/962619/

相关文章:

python - matplotlib 子图 : how to freeze x and y axis?

django:过滤对象列表

python - 具有相同名称的 Django 多个输入字段值

django: select_related 与 entry_set

python - 如何删除或替换两个模式之间的多行文本

python - 如何在pygame的屏幕标题上添加非英文字符?

python - 值错误: Failed to commit transaction in 5 attempts

python - 带有排除和注释的 Django QuerySet 不返回任何结果

python - 使用缓存装饰器在 Python 中运行单元测试

python - "Truncated incorrect DOUBLE value: X_XX"