方法一:添加models的Manager方法,直接在classRandomManager(models.Manager)下面发送代码:defget_queryset(self):returnsuper(RandomManager,self)。get_queryset().order_by('?')classTrainWord(models.Model):'''Usertrainword'''word=models.CharField(max_length=32)randoms=RandomManager()def__unicode__(self):返回时显示self.word数据:words=TrainWord.randoms.all()[count]这个方法是自己定义一个Models的manager方法。任何模型都可以使用这种方法,具有通用性。方法二:查询数据时,通过order_by('?')实现代码:Content.objects.all().order_by('?')[:100]我们可以看到这段代码是在重写方法一中的Models核心Manager的代码是通过models的order_by('?')随机获取data中的数据,通过切片获取指定大小的数据内容。注意:以上两种方式都存在性能瓶颈。当数据库中的数据足够大时,响应会特别慢。方案三:使用随机数获取随机数据代码:importrandomlast=MyModel.objects.count()-1index1=random.randint(0,last)index2=random.randint(0,last-1)ifindex2==index1:index2=lastMyObj1=MyModel.objects.all()[index1]MyObj2=MyModel.objects.all()[index2]详细解释可以看这篇文章中order_by('?')的解释:https://stackoverflow.com/que...
