Django实现文章上一篇下一篇的方法

发布时间:2020-10-25 浏览量: 121 文章分类: python

这个问题乍一眼看上去其实觉得这个问题有必要说吗,这不是很简单吗,直接文章id+1、-1的事情吗,但是就是在这里有个朋友在学习的时候就踩了个坑。在给他解答了问题以后,我觉得这个问题还是可以记录说明一下。

首先出现这个问题的原因是因为对mysqldjango都不太熟悉的原因造成的,因为日常我们更新文章,不可能所有的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的命令,也可以多看看别人的实现。