如果页面未发布,请转到下一个可用页面
If page is unpublished go to the next available page
我正在使用 Django 创建网络漫画。我的模型中有一个状态选择字段:1 表示发布页面,0 表示取消发布。
STATUS = (
(0,"Draft"),
(1,"Publish"))
我创建了两个函数:第一个转到上一页,第二个转到下一页。
def get_previous(self):
previous = Page.objects.filter(status=1).get(number=self.number - 1)
if previous.number > 0:
return reverse('comic_page', args=[previous.chapter.slug, previous.number])
return None
def get_next(self):
last = Page.objects.filter(status=1).last()
next = Page.objects.filter(status=1).get(number=self.number + 1)
if next.number <= last.number:
return reverse('comic_page', args=[next.chapter.slug, next.number])
return None
当所有页面都发布时,它按预期工作,但是当其中一个页面被取消发布时,它不会转到下一个可用页面,而只是刷新页面。
我尝试创建另一个仅包含未发布页面的查询集,然后检查该页面是否存在于该查询集中并跳转 2 个页码而不是 1 个,但它不起作用。
def get_previous(self):
previous = Page.objects.filter(status=1).get(number=self.number - 1)
unpublished = Page.objects.filter(status=0)
if previous in unpublished:
previous = Page.objects.filter(status=1).get(number=self.number - 2)
return reverse('comic_page', args=[previous.chapter.slug, previous.number])
if previous.number > 0:
return reverse('comic_page', args=[previous.chapter.slug, previous.number])
return None
如有任何建议,我们将不胜感激,谢谢!
而不是使用 get
并在 number
上进行 精确 查找,而是 小于 或大于 查找 (lt
/ gt
lookups) on the number with an ordering and use the first
/ last
methods:
def get_previous(self):
previous = Page.objects.filter(status=1, number__lt=self.number).order_by('number').last()
if previous is not None:
return reverse('comic_page', args=[previous.chapter.slug, previous.number])
return None
def get_next(self):
next = Page.objects.filter(status=1, number__gt=self.number).order_by('number').first()
if next is not None:
return reverse('comic_page', args=[next.chapter.slug, next.number])
return None
我正在使用 Django 创建网络漫画。我的模型中有一个状态选择字段:1 表示发布页面,0 表示取消发布。
STATUS = (
(0,"Draft"),
(1,"Publish"))
我创建了两个函数:第一个转到上一页,第二个转到下一页。
def get_previous(self):
previous = Page.objects.filter(status=1).get(number=self.number - 1)
if previous.number > 0:
return reverse('comic_page', args=[previous.chapter.slug, previous.number])
return None
def get_next(self):
last = Page.objects.filter(status=1).last()
next = Page.objects.filter(status=1).get(number=self.number + 1)
if next.number <= last.number:
return reverse('comic_page', args=[next.chapter.slug, next.number])
return None
当所有页面都发布时,它按预期工作,但是当其中一个页面被取消发布时,它不会转到下一个可用页面,而只是刷新页面。
我尝试创建另一个仅包含未发布页面的查询集,然后检查该页面是否存在于该查询集中并跳转 2 个页码而不是 1 个,但它不起作用。
def get_previous(self):
previous = Page.objects.filter(status=1).get(number=self.number - 1)
unpublished = Page.objects.filter(status=0)
if previous in unpublished:
previous = Page.objects.filter(status=1).get(number=self.number - 2)
return reverse('comic_page', args=[previous.chapter.slug, previous.number])
if previous.number > 0:
return reverse('comic_page', args=[previous.chapter.slug, previous.number])
return None
如有任何建议,我们将不胜感激,谢谢!
而不是使用 get
并在 number
上进行 精确 查找,而是 小于 或大于 查找 (lt
/ gt
lookups) on the number with an ordering and use the first
/ last
methods:
def get_previous(self):
previous = Page.objects.filter(status=1, number__lt=self.number).order_by('number').last()
if previous is not None:
return reverse('comic_page', args=[previous.chapter.slug, previous.number])
return None
def get_next(self):
next = Page.objects.filter(status=1, number__gt=self.number).order_by('number').first()
if next is not None:
return reverse('comic_page', args=[next.chapter.slug, next.number])
return None