我有一个带文本字段的django模型。我在管理站点上使用富文本编辑器(nicEdit),以允许客户端轻松地在该字段中输入标记。我希望处理该字段的内容,并在将任何内容插入数据库之前执行一些操作。
例如,我想剥离由MS Word,字体标签等生成的垃圾。我希望这部分应该很简单,但我不知道要覆盖或挂钩以使其工作。
我还想检测远程链接的图像,将本地副本下载到MEDIA_ROOT,然后将img src重新链接到本地图像。我不太确定如何获取远程图像;我认为django.Storage
可能有所帮助,但看起来它无法从远程网址获取内容。
有什么建议吗?
答案 0 :(得分:9)
要在保存之前操作模型中的数据,请使用save()方法,如:
def save(self):
self.NameOfTextField = myCustomCleanFunction(self.NameOfTextField)
super(YourModelName, self).save()
在执行super(modelname,self).save()之前,不会保存任何内容。
如果你想提出某种类型的错误而不是只是静默处理它,你可能想要使用带有 raise ValidationError()的clean()方法。
下载远程内容对我来说是一个新内容,所以我无法帮助你。您可能需要查看Django并找到Python函数来完成这项工作。
答案 1 :(得分:3)
剥离垃圾等应该使用自定义表单域完成。
下载图片......有多种方法可以解决这个问题。