声明:此Django分类下的教程是追梦人物所有,本人写在此只是为了巩固复习使用
博客文章的模型有一个 excerpt
字段,这个字段用于存储文章的摘要。目前为止,还只能在 django admin 后台手动为文章输入摘要。每次手动输入摘要比较麻烦,对有些文章来说,只要摘取正文的前 N 个字符作为摘要,以便提供文章预览就可以了。因此我们来实现如果文章没有输入摘要,则自动摘取正文的前 N 个字符作为摘要,这有两种实现方法。
覆写 save 方法
第一种方法是通过覆写模型的 save 方法
,从正文字段摘取前 N 个字符保存到摘要字段。在 创作后台开启,请开始你的表演 中我们提到过 save 方法
中执行的是保存模型实例数据到数据库的逻辑,因此通过覆写 save 方法,在保存数据库前做一些事情,比如填充某个缺失字段的值。
回顾一下博客文章模型代码:
blog/models.py
class Post(models.Model):
# 其它字段...
body = models.TextField()
excerpt = models.CharField(max_length=200, blank=True)
def save(self, *args, **kwargs):
self.modified_time = timezone.now()
super().save(*args, **kwargs)
其中 body
字段存储的是正文,excerpt
字段用于存储摘要。通过覆写模型的save 方法
,在数据被保存到数据库前,先从 body
字段摘取 N 个字符保存到excerpt
字段中,从而实现自动摘要的目的。具体代码如下: