方法一:增加models的Manager方法
下边就立即发代码了
class RandomManager(models.Manager):
def get_queryset(self):
return super(RandomManager, self).get_queryset().order_by('?')
应用的情况下
class TrainWord(models.Model):
'''
User train word
'''
word = models.CharField(max_length=32)
randoms = RandomManager()
def __unicode__(self):
return self.word
数据展现时:
words = TrainWord.randoms.all()[count]
这类方法 ,是自身界定了一个Models的manager方法,一切一个models都能够应用此方法,具备实用性。
方法二:查寻数据时 ,根据order_by('?')完成
完成代码:
Content.objects.all().order_by('?')[:100]
我们可以见到这一段代码便是方法一中重新写过Models的Manager的关键代码 ,全是根据models的order_by('?')来完成任意获得数据中的数据,在根据切片,完成得到 特定尺寸的数据內容 。
留意:
之上二种方法都存有特性短板 ,当数据库文件的数据充足大的情况下,就会回应非常慢。
计划方案三:根据随机数字,来获得任意的数据
代码:
import random
last = MyModel.objects.count() - 1
index1 = random.randint(0, last)
index2 = random.randint(0, last - 1)
if index2 == index1: index2 = last
MyObj1 = MyModel.objects.all()[index1]
MyObj2 = MyModel.objects.all()[index2]
实际的表述 ,能够看一下此一篇文章针对order_by('?')的解读:https://stackoverflow.com/questions/1731346/how-to-get-two-random-records-with-django/6405601#6405601
文章来源于网络,如有侵权请联系站长QQ61910465删除本文版权归趣快排www.sEoguruBlog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ✈61910465文中先发于BigYoung华明镇