nil*_*ils 5 python django wagtail
我正在创建一个wagtail的页面,我需要知道当前页面的上一个和下一个兄弟:
在我的肖像页面模型中,我试图定义两种方法来找到正确的网址,但我错过了一个关键部分.为了得到第一个兄弟姐妹,我可以做以下事情:
class PortraitPage(Page):
...
def first_portrait(self):
return self.get_siblings().live().first().url
Run Code Online (Sandbox Code Playgroud)
有first()和last()方法,但似乎没有一个next()或previous()方法来获得直接邻居(按照他们在wagtail管理员安排的顺序).
有没有办法实现这个目标?
Django的树胡提供get_next_sibling和get_prev_sibling这将树返回你的兄弟姐妹直接,但这些并不一定是你的下一个公布的兄弟姐妹.要申请那些你可以使用:
prev = page.get_prev_siblings().live().first()
next = page.get_next_siblings().live().first()
Run Code Online (Sandbox Code Playgroud)
显然,它也可以与任何其他查询集操作链接.
通过调试器一段时间后,我发现 wagtail 已经有两个方法:get_prev_sibling()和get_next_sibling()。
所以这些方法可能看起来像这样(考虑到前一个方法中的第一页和下一个方法中的最后一项):
def prev_portrait(self):
if self.get_prev_sibling():
return self.get_prev_sibling().url
else:
return self.get_siblings().last().url
def next_portrait(self):
if self.get_next_sibling():
return self.get_next_sibling().url
else:
return self.get_siblings().first().url
Run Code Online (Sandbox Code Playgroud)