我正在尝试从模型 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/