2011-11-21 55 views
1

我想用related_to()功能Django的標記傳遞有限的查詢集到related_to()和我傳遞一個查詢集看起來像這樣:在Django標記

Chapter.objects.all().order_by('?')[:5] #the important thing here is the "[:5]" 

我的問題是,這個功能顯然使用in_bunk()函數和你Cannot use 'limit' or 'offset' with in_bulk

我怎樣才能限制我的queryset只傳遞5個對象,同時使用in_bunk?

我知道related_to()讓你傳遞變量num(這是它應該返回的對象的數量),但我不希望它每次都輸出相同的查詢集。所以我想出了隨機訂購它的想法,並在之前將它限制在之前,它被傳遞給函數。但是,正如你所看到的:有限的查詢集和bunk_it不能很好地結合在一起。

回答

0

我發現了一個解決方案,雖然它不是最好的,儘管它處理不必要的數據。我只是簡單地遍歷與當前實例有關的模型的所有實例,然後我隨後進行隨機排序並分片:

related_objects = instance.related_to(Model)  # all related objects are found 
related_objects = random.sample(related_objects,5) # .. and afterwards sorted randomly and sliced