我正在使用Django Rest Framework
構建的API。我已經定義了幾個model
類,並且我還創建了一些過濾器以應用於在指定的api-endpoints
中發生的某些查詢。如何用Django Rest過濾器限制查詢結果
我想在queryset
中應用LIMIT,但我寧願不要 使用Django符號e.x. Entry.objects.all()[:5]
。相反,我希望能夠應用與模型相關的過濾器內的限制。
直到現在我還沒有找到任何解決方案。我想我應該找到一種方法來定義一個默認值的過濾器,這會導致不限制查詢集,並且如果請求到達端點並且包含類似?filter=10
那麼查詢集應該被限制爲前10個。
這是非常接近我所需要的真的!雖然在這種情況下,我想重寫'LimitOffsetPagination'類併爲參數'offset'指定一個默認值(可能爲0),以便用戶只需指定'limit'參數。 我正在考慮使用'PageNumberPagination'並覆蓋'page_size_query_param'參數以具有默認值'limit'。這聽起來合理嗎? – LetsPlayYahtzee
是的,這是一個很好的解決方案。如文檔中所述,參數「page_size_query_param」可用於允許客戶端控制請求頁面大小。在「PageNumberPagination'中,這個參數默認設置爲None。 –
這可能聽起來很愚蠢,但我無法弄清楚放置自定義分頁類的位置。 – LetsPlayYahtzee