我正在创建一个
PageListingViewSet
并希望在表格视图中指定默认顺序。以前,ModelAdmin
类(我从中迁移代码)允许我指定ordering
。同样,Wagtail ModelViewSet
允许开发人员指定 ordering
。但是, PageListingViewset
不定义或继承允许定义 ordering
的类。
ViewSet
文档,查看了 Wagtail 源代码,并尝试在 ordering
上设置 PageListingViewSet
,但不知道如何指定顺序。
开发人员如何以传统方式指定(可能是多层)Wagtail
PageListingViewSets
的排序(即遵循 Django ordering
约定)。
在 Wagtail 中,PageListingViewSet 中的页面排序与常规 Django ModelViewSet 中的模型排序有点不同。 PageListingViewSet 继承自 ViewSet,它不像 Django 的 ModelViewSet 那样提供对排序的直接支持。但是,您可以通过自定义用于获取页面的查询集来实现排序。
以下是如何指定 PageListingViewSet 的顺序:
重写 PageListingViewSet 的 get_queryset 方法。使用 查询集上的 order_by 方法来指定您想要的排序。
示例
from wagtail.api.v2.views import PageListingViewSet
from myapp.models import MagazineIssue
class CustomPageListingViewSet(PageListingViewSet):
model = MagazineIssue # Set your page model
menu_label = "Issues"
icon = "doc-full-inverse"
add_to_admin_menu = True
search_fields = ("title",)
filterset_class = MagazineIssueFilterSet
def get_queryset(self):
queryset = super().get_queryset()
# Specify your ordering here
return queryset.order_by('-date_published')
这种方法允许您以类似于 Django 排序约定的常规方式指定排序。