方法一:
n = 10
i = random.randint(0, Article.objects.count()-n)
articles = Article.objects.all()[i:i+n]
通过Article.objects.count()
得到所有数据条数,通random函数得到其中一个数据,然后再在这条数据的位置选择10条数据,此方法不是真正的随机取数据。
方法二:
count = Article.objects.all().count()
rand_ids = sample(range(1, count), 10)
print(rand_ids)
articles = Article.objects.filter(id__in=rand_ids)
同上计算所有数据条数,通过sample方法得到10条数据,通过filter的方法,查找id__in
在这个数据位的值。
方法三:
import random
content_pks = Article.objects.values_list('pk', flat=True)
selected_pks = random.sample(list(content_pks), 3)
content_objects = Article.objects.filter(pk__in=selected_pks)
print(content_objects)
方法四:
total_count= Content.objects.count()
fraction = 100./total_count
object_list = [ c for c in Content.objects.all() if random.random() < fraction ]