如何为 Wagtal PageListingViewSet 指定`ordering`

问题描述 投票:0回答:1

我正在创建一个

PageListingViewSet
并希望在表格视图中指定默认顺序。以前,
ModelAdmin
类(我从中迁移代码)允许我指定
ordering
。同样,Wagtail
ModelViewSet
允许开发人员指定
ordering
。但是,
PageListingViewset
不定义或继承允许定义
ordering
的类。

我已阅读

ViewSet
文档,查看了 Wagtail 源代码,并尝试在
ordering
上设置
PageListingViewSet
,但不知道如何指定顺序。

开发人员如何以传统方式指定(可能是多层)Wagtail

PageListingViewSets
的排序(即遵循 Django
ordering
约定
)。

wagtail wagtail-admin
1个回答
0
投票

在 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 排序约定的常规方式指定排序。

© www.soinside.com 2019 - 2024. All rights reserved.