python - Django - 如何在将文本保存到数据库之前修改文本?

标签 python regex database django sqlite

我想输入类似(通过管理页面)的内容:

text = 't(es)t'

并将它们另存为:

'test'

在数据库上。

然后我使用这个正则表达式来修改它们:

re.sub(r'(.*)\({1}(.*)\){1}(.*)', r'\1\2\3', text)

我知道如何将文本从 't(es)t' 转换为 'test' 但问题是

当我使用

name = models.CharField(primary_key=True, max_length=16)

输入文本(来自管理员)。立即保存到数据库,保存前不能修改。

最后,来自管理员 text = 't(es)t' (CharField) 的单个输入。

我想要什么?

  1. 't(es)t'用作字符串变量。
  2. 保存'test'到数据库

最佳答案

尝试覆盖模型中的保存方法,

class Model(model.Model):
    name = models.CharField(primary_key=True, max_length=16)

    # This should touch before saving
    def save(self, *args, **kwargs):
        self.name = re.sub(r'(.*)\({1}(.*)\){1}(.*)', r'\1\2\3', self.name)
        super(Model, self).save(*args, **kwargs)

更新:

class Model(model.Model):
        name = models.CharField(primary_key=True, max_length=16)
        name_org = models.CharField(max_length=16)

        # This should touch before saving
        def save(self, *args, **kwargs):
            self.name = re.sub(r'(.*)\({1}(.*)\){1}(.*)', r'\1\2\3', self.name)
            self.name_org = self.name # original "t(es)t"
            super(Model, self).save(*args, **kwargs)

关于python - Django - 如何在将文本保存到数据库之前修改文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23887961/

相关文章:

python - 从列表中选择特定项目

regex - (a*+b*) 生成的字符串是什么类型

PHP:使用 MySQL 数据库将区号与电话号码分开

sql-server - 为什么我要使用两个步骤创建一个表?

database - MongoDB 在用户家庭地址上嵌入 vs 引用?

python - 带有 python 请求的多部分表单数据生成器

python 2 : How can I edit each part of my set object?

database - Oracle NCLOB 问题

python - Python中的Lookup Chain和MRO有什么关系?

javascript - 替换符合条件的括号