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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java之獲取隨機數的4種方法Java隨機
- 獲取當前時間戳和隨機數的獲取、Java Random、ThreadLocalRandom、UUID類中的方法應用(隨機數)時間戳隨機JavarandomthreadUI
- Pythonrandom模組(獲取隨機數)常用方法和使用例子Pythonrandom隨機
- java獲取時間戳和隨機數Java時間戳隨機
- 從Linux核心中獲取真隨機數Linux隨機
- mssql sqlserver 從指定字串中獲取數字的方法SQLServer字串
- 獲取指定月份的天數
- 直播軟體原始碼,JS獲取指定長度的隨機字元原始碼JS隨機字元
- 從資料集中隨機抽取一定數量的資料隨機
- 【API】隨機獲取圖片API隨機
- JavaScript 獲取0-1之間的隨機數JavaScript隨機
- mssql sqlserver 獲取指定漢字的筆畫數的方法分享SQLServer
- jqGrid獲取json資料方法JSON
- JavaScript 獲取指定區間的數字JavaScript
- 在指定範圍內生成隨機數隨機
- 生成指定區間的隨機小數隨機
- 如何生成指定分佈的隨機數隨機
- HQChart使用教程69 -獲取指定股票的K線資料
- Java ArrayList 查詢、刪除指定元素;排序;遍歷;隨機獲取元素等常用操作Java排序隨機
- 如何產生指定範圍的隨機數隨機
- Java從List中獲取隨機元素Java隨機
- 關於如何獲取資料的方法
- 基於隨機定位的地圖資訊獲取方式隨機地圖
- Oracle獲取所有表名資訊和獲取指定表名欄位資訊Oracle
- Python獲取list中指定元素索引的兩種方法Python索引
- 【Python小隨筆】 SSH 獲取資訊Python
- mssql sqlserver獲取指定月份當月天數總和SQLServer
- 隨機獲取到的高質量圖片隨機
- 幾種生成隨機數方法隨機
- django建立專案案例1獲取並傳遞資料續04Django
- 6.DJango在views裡面對獲取資料進行操作DjangoView
- ArcGIS如何自動獲得隨機取樣點?隨機
- python爬蟲從ip池獲取隨機IPPython爬蟲隨機
- 獲取資料庫中到指定經緯度距離的座標資料庫
- vue獲取位址列引數方法Vue
- 偽隨機數是什麼?偽隨機數生成方法有哪些?隨機
- 一種獲取SAP HANA資料庫表條目數的另類方法資料庫
- JavaScript隨機數實現防止快取JavaScript隨機快取