我有一个模型,代表我在网站上展示的绘画。在主要网页上,我想展示其中的一些:最新的,大多数时间未访问的网页,最受欢迎的网页和随机的网页。
我正在使用Django 1.0.2。
尽管使用django模型可以轻松提取其中的前3个,但最后一个(随机)却给我带来了一些麻烦。在我看来,我可以将代码进行如下编码:
number_of_records = models.Painting.objects.count()
random_index = int(random.random()*number_of_records)+1
random_paint = models.Painting.get(pk = random_index)
在我看来,这看起来并不像我想要的东西-这完全是数据库抽象的一部分,应该包含在模型中。另外,在这里,我需要处理已删除的记录(然后所有记录的数量将无法覆盖所有可能的键值)以及可能还有很多其他事情。
我还有其他选择吗,最好是在模型抽象中进行选择吗?
使用order_by('?')
将在生产的第二天杀死数据库服务器。更好的方法是类似于从关系数据库中获取随机行中所述的方法。
from django.db.models.aggregates import Count
from random import randint
class PaintingManager(models.Manager):
def random(self):
count = self.aggregate(count=Count('id'))['count']
random_index = randint(0, count - 1)
return self.all()[random_index]
问题内容: 如何使用Django获得两个不同的随机记录?我见过有关如何获得一个记录的问题,但我需要获得两个随机记录,而且它们必须有所不同。 问题答案: 如果你在ORM中指定了随机运算符,我很确定它将为你提供两个不同的随机结果,不是吗?
问题内容: 我有以下序列,这些序列是带有序列标头及其核苷酸的fasta格式。如何随机提取序列。例如,我想从总序列中随机选择2个序列。提供的工具可以根据百分比而不是序列数进行提取。谁能帮我? 快餐 预期产量 问题答案: 如果您正在使用FASTA文件时使用BioPython,获得序列使用random.sample: 输出: 您可以根据需要提取字符串: 如果行始终成对出现,并且您跳过了顶部的元数据,则可
问题内容: 假设我们有以下定义的Django ORM模型: 我想获取每种语言的最新聚会。 看来您可以使用Django Aggregates简化 查找过程: 在我看来,这应该获取每种语言的“最新”聚会。但是事实并非如此: 我希望能得到两个最新的Python和Node见面会! 如何构造仅获取每种语言的最新聚会的查询? PS。 我正在使用MySQL作为后端。 问题答案: 将您的条款放在之前。 从聚合文档
我试图从Laravel5.7中的表中获取随机数目的行,但找不到任何解决方案。我有用 它工作正常。但是,我需要应用它与
问题内容: 对于像这样的简单SQL, 如何将行号添加到它们,以使行号变为1,2和3? 更新: 我以为我可以像上面那样简化我的问题,但是事实却更加复杂。所以这是一个完整的版本-我需要MyTable为每个人提供三个随机选择(来自),选择/行数分别为1、2和3,并且人与选择之间没有逻辑上的联系。 上面的SQL的问题是, 显然,应该添加1、2和3的拾取/行数 而且不明显的是,上面的SQL将给每个人相同
问题内容: 我在Django中使用以下模型构建了一个问答类型的网站: 我需要显示一个特定的问题及其答案。通常,我需要2个查询才能做到这一点: 我希望使用一个查询来检索所有内容。在MySQL中,它将是: 无论如何,我可以通过Django的ORM做到这一点吗?extra()在这种情况下会有所帮助吗? 问题答案: 这正是select_related()所做的。唯一的问题是必须从Answer模型而不是Qu