编辑Django上的博客文章,但在完成之前不要显示

cygmwpex  于 2023-01-03  发布在  Go
关注(0)|答案(1)|浏览(131)

这个问题基本上是在标题中。我想知道是否有一种方法可以让用户在Django管理中编辑博客文章,但在最终定稿之前不让公众看到它?

6l7fqoea

6l7fqoea1#

如果博客文章尚未发布

你可以给模型增加一个布尔字段,例如,

published = models.BooleanField(default=False)

并且只在published为True时显示帖子。另一个选项是设置publication_date字段,并且只在今天的日期大于该日期时显示。

如果帖子已发布,

这就有点复杂了。你需要能够保存修改而不影响现有的帖子,直到修改完成。
为此,您可以使用两个独立的字段,一个用于内容,一个用于editable_content,另一个字段用于指示您是否要从editable_content更新。当然,在面向公众的应用中,您只显示内容,但管理员将能够看到所有字段。

class Post(models.Model):
    content = models.TextField(...)
    editable_content = models.TextField(...)
    sync_editable = models.BooleanField(
         default=False, 
         help_text = "Click to update content from editable_content")
    
    def save(self):
        #check if you want to update from edited version
        if sync_editable:
             self.content = self.editable_content
             #reset sync_editable to prevent accidents
             self.sync_editable = False
        elif self.editable_content = "":
             #keep things in sync for easier editing later
             self.editable_content = self.content
        super().save()

相关问题