fro*_*hem 2 python regex database sqlite django
我想输入类似的东西(通过管理页面):
text = 't(es)t'
Run Code Online (Sandbox Code Playgroud)
并将它们保存为:
'test'
Run Code Online (Sandbox Code Playgroud)
在数据库上.
我使用这个正则表达式来修改它们:
re.sub(r'(.*)\({1}(.*)\){1}(.*)', r'\1\2\3', text)
Run Code Online (Sandbox Code Playgroud)
我知道如何将文本转换为't(es)t','test'但问题是
当我使用
name = models.CharField(primary_key=True, max_length=16)
Run Code Online (Sandbox Code Playgroud)
输入文本(来自管理员).它立即保存到数据库,保存前无法修改它.
最后,来自admin text = 't(es)t'(CharField)的单个输入.
我想要什么?
't(es)t'作为一个字符串变量.'test'到数据库尝试覆盖模型中的save方法,
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)
Run Code Online (Sandbox Code Playgroud)
更新:
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)
Run Code Online (Sandbox Code Playgroud)