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

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

我正在使用Django 1.0.2

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

记录数=models.Painting.objects.count()
random_index=int(random.random()*_记录的数量)+1
random_paint=models.paint.get(pk=random_索引)

它看起来不像我希望在我的视图中看到的东西——这完全是数据库抽象的一部分,应该在模型中。此外,这里我需要处理删除的记录(那么所有记录的数量将不会涵盖所有可能的键值)以及可能的许多其他内容

还有其他的选择吗,最好是在模型抽象内部

只需使用:

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

它记录在QuerySet API中

发表评论