代码之家  ›  专栏  ›  技术社区  ›  Dagg Nabbit

Django admin-数据库插入/更新前的进程字段

  •  3
  • Dagg Nabbit  · 技术社区  · 14 年前

    我有一个带有文本字段的django模型。我在管理站点上使用了一个富文本编辑器(nicEdit),允许客户机轻松地在字段中输入标记。在将任何内容插入数据库之前,我想处理字段的内容并执行一些操作。

    例如,我想剥离垃圾产生的MS字,字体标签等,我希望这一部分应该是容易的,但我不知道要覆盖或钩子让这个工作。

    我还想检测远程链接的图像,将本地副本下载到MEDIA\u ROOT,并将img src重新链接到本地图像。我不太清楚如何获取远程图像;我想 django.Storage 可能会有所帮助,但看起来它无法从远程URL获取内容。

    有什么建议吗?

    2 回复  |  直到 14 年前
        1
  •  3
  •   Wolph    14 年前

    剥离垃圾等应该做一个自定义的formfield。

    正在下载图像。。。有多种方法可以解决这个问题。

    • 如果选择在数据库中存储图像位置和原始位置,则应使用预保存信号。
    • 如果您选择直接在本地存储图像,那么也可以将其作为formfield的一部分。只需下载所有远程图像并用本地url替换url。
        2
  •  9
  •   Jamie    14 年前

    要在保存模型中的数据之前对其进行操作,请使用save()方法,如:

        def save(self):
          self.NameOfTextField = myCustomCleanFunction(self.NameOfTextField)
          super(YourModelName, self).save()
    

    如果您希望引发某种类型的错误,而不只是静默地处理它,那么您可能希望将clean()方法用于 引发ValidationError()

    下载远程内容对我来说是新的,所以我不能帮你。您可能需要越过Django,找到Python函数来完成这项工作。