在 Wagtail 中,请考虑以下页面类型:
class WorkshopPage(Page):
category = models.ForeignKey(
WorkshopCategory, on_delete=models.SET_NULL, blank=True, null=True
)
class WorkshopIndexPage(RoutablePageMixin, Page):
subpage_types = ["WorkshopPage"]
在 wagtail 管理中,我需要按其
category__name
对 WorkshopIndexPage 的子页面进行排序。
由于在docs中它说在WorkshopPage Meta类中设置排序将不起作用(它不起作用),我已经尝试了here提出的解决方案。但是,当我在 WorkshopIndexPage 中执行此操作时:
def get_children(self):
qs = WorkshopPage.objects.order_by("category__name")
return qs
我收到错误:
Cannot combine queries on two different base models.
这似乎是一个简单的用例,但我似乎无法让它工作。
目前 wagtail 中没有直接的方法来对子页面进行排序。
您有两个选择:
这里是实现第二种方法的更改的快速列表:
display_order = models.PositiveIntegerField(default=0)
class Meta:
ordering = ["display_order"]
content_panels
以在编辑页面中启用它。def get_context(self, request):
context = super().get_context(request)
context['subpages'] = self.get_children().live().order_by('display_order')
return context