Django - 如何在将文本保存到数据库之前修改文本? [英] Django - How can i modify text before save them to database?

查看:35
本文介绍了Django - 如何在将文本保存到数据库之前修改文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to input something like(via the admin page):

text = 't(es)t'

并将它们另存为:

'test'

关于数据库.

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

And I use this Regex to modify them:

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

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

I know how to transform text from 't(es)t' to 'test' but the problem is

当我使用

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

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

to input text(from admin). It immediately save to database cannot modify it before saving.

最后,来自 admin text = 't(es)t' (CharField) 的单个输入.

Finally, From a single input from admin text = 't(es)t' (CharField).

我想要什么?

  1. 使用 't(es)t' 作为字符串变量.
  2. 'test'保存到数据库
  1. To use 't(es)t' as a string variable.
  2. Save 'test' to database

推荐答案

尝试覆盖模型中的 save 方法,

Try to overide the save method in your model,

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)

这篇关于Django - 如何在将文本保存到数据库之前修改文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆