Django Models隨機獲取指定數量資料方法
方法一:新增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(’?’)的講解:
本文首發於
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/430/viewspace-2825920/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- javascript實現獲取指定數字區間的隨機數JavaScript隨機
- PHP獲取隨機數PHP隨機
- Random獲取隨機數random隨機
- js獲取指定位數不重複隨機數程式碼例項JS隨機
- js獲取指定區間的隨機數程式碼例項JS隨機
- Java之獲取隨機數的4種方法Java隨機
- MATLAB獲取隨機數——randMatlab隨機
- Pythonrandom模組(獲取隨機數)常用方法和使用例子Pythonrandom隨機
- 獲取當前時間戳和隨機數的獲取、Java Random、ThreadLocalRandom、UUID類中的方法應用(隨機數)時間戳隨機JavarandomthreadUI
- java獲取時間戳和隨機數Java時間戳隨機
- 獲取兩個數之間的隨機數-java隨機Java
- mssql sqlserver 從指定字串中獲取數字的方法SQLServer字串
- 從Linux核心中獲取真隨機數Linux隨機
- 從資料集中隨機抽取一定數量的資料隨機
- 直播軟體原始碼,JS獲取指定長度的隨機字元原始碼JS隨機字元
- 表中隨機取資料隨機
- js獲取指定月份的天數JS
- JavaScript 獲取指定月份的天數JavaScript
- JavaScript 獲取0-1之間的隨機數JavaScript隨機
- 集合框架-獲取無重複的隨機數案例框架隨機
- js獲取數字和字母隨機數程式碼例項JS隨機
- 【API】隨機獲取圖片API隨機
- 使用Django從資料庫中隨機取N條記錄的不同方法及其效能實測Django資料庫隨機
- [隨機數詳解]生成一個隨機數,生成指定範圍的隨機數及隨機陣列去重隨機陣列
- 使用SQL語句從資料庫一個表中隨機獲取資料SQL資料庫隨機
- 【Django】ajax 非同步重新整理獲取資料Django非同步
- mssql sqlserver 獲取指定漢字的筆畫數的方法分享SQLServer
- JavaScript 獲取指定區間的數字JavaScript
- 在指定範圍內生成隨機數隨機
- 生成指定區間的隨機小數隨機
- 如何生成指定分佈的隨機數隨機
- java生成指定範圍的隨機數Java隨機
- 編寫一個程式,獲取10個1至20的隨機數,要求隨機數不能重複。隨機
- 隨機獲取oracle資料庫中的任意一行資料(rownum)示例介紹隨機Oracle資料庫
- 大規模資料儲存叢集資料存放的設計,分散式shardid的生成-如何指定範圍隨機數,分組隨機數分散式隨機
- Oracle取隨機數函式Oracle隨機函式
- 如何產生指定範圍的隨機數隨機
- javascript生成指定位數隨機數程式碼例項JavaScript隨機