python - Django 获取随机对象

标签 python django object random

我正在尝试从模型 A 中获取一个随机对象

目前,这段代码运行良好:

random_idx = random.randint(0, A.objects.count() - 1)
random_object = A.objects.all()[random_idx]

但我觉得这段代码更好:

random_object = A.objects.order_by('?')[0]

哪个最好?使用第一个代码删除对象可能有问题?因为,例如,我可以有 10 个对象,但是 ID 为 10 的对象已经不存在了?我是否误解了 A.objects.all()[random_idx] 中的某些内容?

最佳答案

最近一直在看。线路:

random_object = A.objects.order_by('?')[0]

据报道已导致许多服务器宕机。

不幸的是,Erwans 代码在访问非顺序 ID 时导致错误。

还有另一种简短的方法:

import random

items = list(Product.objects.all())

# change 3 to how many random items you want
random_items = random.sample(items, 3)
# if you want only a single random item
random_item = random.choice(items)

这样做的好处是它可以毫无错误地处理非顺序 ID。

关于python - Django 获取随机对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22816704/

相关文章:

date - VBScript中的Excel.Find函数出现错误

python - 如何添加键值而不是替换它们。 Python 字典

KDTree 中的 python 点索引

python - Django 部署服务器仅使用 uWSGI 提供静态文件

jquery - Django Ajax ModelForm 向 request.POST 提交一个空表单

javascript - 在javascript中创建对象时如何动态提供字段名?

python - Django 休息 : Files\Images Uploading

python - 等待语句不输出消息

python - 无法在虚拟环境中运行 django wsgi

Javascript 从 ajax 响应访问嵌套对象