Django随机从数据库中取数据

方法一:

    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 ]

其它的方法https://stackoverflow.com/questions/3506678/in-django-how-do-i-select-100-random-records-from-the-database

你可能感兴趣的:(Django随机从数据库中取数据)