用于bbcode输入的自定义django管理表单



我正在写一个django网站,我想使用内置的管理界面来允许管理员编辑一些内容。所以他们不需要学习任何html,我希望他们能够使用简单的bbcode标签来格式化内容。

我已经写了一对函数来转换bbcode和html标记。分别叫它们html2bbcode和bbcode2html。

基本上,我需要以下内容:

  • 通过html2bbcode从数据库传递html,以便bbcode显示在管理编辑表单中。
  • 从admin表单通过bbcode2html传递bbcode当管理员按下'save',在它进入数据库之前。
  • 能够检索作为html的内容,当它实际上要形成一个网页的一部分。

我找不到任何地方如何通过自定义函数从管理界面传递输入,然后将结果保存在数据库(反之亦然)。有人能给我指个方向吗?

您可以在模型中有两个单独的字段-一个用于html,一个用于bbcode。使html字段不显示在管理界面中(通过使用ModelAdmin类的exclude属性),这样管理员只能看到和编辑bbcode字段。您可以通过覆盖模型的save方法来获取html内容——将您的bbcode2html函数放在那里。下面的内容:

def save(self, *args, **kwargs):
    self.html = bbcode2html(self.bbcode)
    super(MyModel, self).save(*args, **kwargs)

定制管理界面的文档:https://docs.djangoproject.com/en/dev/ref/contrib/admin/

最新更新