Django实现文章上一篇下一篇的方法
发布时间:2020-10-25
浏览量: 1852
文章分类: python
这个问题乍一眼看上去其实觉得这个问题有必要说吗,这不是很简单吗,直接文章id+1、-1的事情吗,但是就是在这里有个朋友在学习的时候就踩了个坑。在给他解答了问题以后,我觉得这个问题还是可以记录说明一下。
首先出现这个问题的原因是因为对mysql和django都不太熟悉的原因造成的,因为日常我们更新文章,不可能所有的id都是按照顺序写下去的(比如你中间删除了某篇文章等其他问题,都可能造成id断了。)这也就会出现用一开始的那个方法会有很多bug。
而在数据库中是有大于、小于的条件筛选,同时也有limit可以控制需要的数据条数。
而用django封装的ORM来做就更加简单了。
首先需要借助__gt、__lt来做大于、小于的条件筛选。那实现就很简单了。
def next_article(self):
# 下一篇
return Article.objects.filter(id__gt=self.id).order_by('id').first()
def pre_article(self):
# 上一篇
return Article.objects.filter(id__lt=self.id).order_by('-id').first()
通过上面的方法,结合自己遇到的情况在调整就可以完美解决了。主要还是要熟悉django ORM的命令,也可以多看看别人的实现。