我正在开发一个使用Django构建的内部工具.我们使用该工具所做的部分工作是将旧PDF中的内容数字化.PDF经历了某种OCR过程,但这给它们留下了频繁的两倍或三倍的空格和每行结尾处的硬回报.我们使用此文本在Django的内置管理中创建数据库对象.
假设我有一个这样的数据模型:
import re
from django.db import models
from django.db.models import CharField, TextField
class Widget(models.Model):
name = CharField()
description = TextField()
def fix_description(self):
self.description = re.sub(r"\s+", " ", self.description)
self.description = re.sub(r"\\n", "\n", self.description)
self.description = re.sub(r" *\n *", "\n", self.description)
大多数情况下,description
中的文本将是一个单独的段落.有时它应该包含实际的换行符,我想通过在创建对象时在Django admin的Description字段中键入\n
来表示这一点.fix_description
方法完全按照我们的意愿清除了意外的空格,并保留了手动输入的换行符.
我想让fix_description
在通过管理表单创建对象时只运行一次,然后再也不运行一次.我不想担心在更新描述时运行这段代码,因为如果发生这种情况,它将删除我们希望出现的换行符.做这件事最好的方法是什么?