Django保留多种模型对结果和分页进行排序

时间:2019-02-05 09:17:34

标签: django django-rest-framework postman

我需要从许多模型中获得多个结果,我通过使用django rest多个模型来做到这一点,但我需要对结果进行排序和分页。

我也进行了排序和分页。但是我阅读并遇到了与我的业务有关的问题。我需要从所有模型的每个页面中检索例如10个结果,并且可能有时同一页面包含来自同一模型的所有结果,而在django rest多个模型中则不可用。

作为文档,

“ LimitOffsetPagination中的限制适用于每个查询集。这意味着返回的结果数实际上是number_of_querylist_items *限制。对于ObjectMultipleModelAPIView这是直观的,但是当视图的限制为时,FlatMultipleModelAPIView可能首先使一些开发人员感到困惑查询列表中的50种和三种不同的模型/序列化器组合将返回150个项目的列表。

关于MultipleModelLimitOffsetPagination和FlatMultipleModelAPIView的另一件事要注意的是,在按限制/偏移量对过滤查询列表后对排序进行了排序。要了解为什么这可能会返回一些内部结果,请想象一个项目ModalA,其中有50行的名称字段都以``A''开头,而ModelB有50行,其名称字段均以``B''开头。如果在按名称排序的视图中使用限制/偏移分页为10,则第一页将返回名称以'A'开头的10个结果,然后以'B'开头的10个结果。然后第二页还包含以'A'开头的10个结果,然后是以'B'开头的10个结果,这肯定不会映射到用户对字母排序的期望。不幸的是,在获取数据之前进行排序可能需要完全绕过Django的查询集,并在sorting_field字段上使用联接编写原始SQL,这将很难将其干净地集成到当前系统中。因此,建议在使用MultiModelModelLimitOffsetPagination时,按隐藏字段(例如id对最终用户不可见)对_field值进行排序。 “

所以我的问题是我该怎么做?

非常感谢您的光临

0 个答案:

没有答案