【发布时间】:2020-05-18 08:41:39
【问题描述】:
我有一个 Wagtail 网站,我正在为几种不同的页面类型/内容类型制作一个列表页面。我先按一个 sn-p 字段过滤:
def highlights_list(category='Highlight'):
tag = ContentCategory.objects.get(name=category)
highlights = Page.objects.filter(
Q(event__categories=tag)|
Q(newspage__categories=tag)|
Q(contentpage__categories=tag)).live()
return highlights.order_by('-last_published_at')
在 Wagtail 中,所有内容类型都继承自 Page 基类,这使得创建包含我想要的所有内容类型的查询集变得非常容易。但我不知道如何很好地排序。
last_published_at 排序适用于NewsPage 和ContentPage,但不适用于Event,我想按DateTimeField 对事件进行排序。
我曾考虑在所有名为 sort_date 的模型上创建一个 @property,它使用特定于我想要排序的每个模型的日期时间字段,但这不起作用。
非常欢迎任何建议!
【问题讨论】:
-
你是如何设置你的 models.py 的?
-
你能说得更具体点吗?我将所有内容类型设置为子类
wagtail.core.models.Page,因此它们都可以通过ForeignKey将last_published_at用作字段。 -
我明白你的意思,但我想问你是否愿意以任何你喜欢的方式发布你的相关 models.py 代码,拜托。例如,我想知道 Event 和 NewsPage 是否是 Content Page 的子类。
-
感谢您的澄清。它们都继承自
Page。我已将它们放在 Dpaste 中,但如果长期而言更好的话,可以编辑问题 - dpaste.org/DLTW