我想输入类似的内容(通过管理页面):
text = 't(es)t'
并将其另存为:
'test'
在数据库上。
我使用这个Regex来修改它们:
re.sub(r'(.*)\({1}(.*)\){1}(.*)', r'\1\2\3', text)
我知道如何将文字从't(es)t'
转换为'test'
,但问题是
当我使用
时name = models.CharField(primary_key=True, max_length=16)
输入文字(来自管理员)。它立即保存到数据库,在保存之前无法修改它。
最后,来自admin text = 't(es)t'
(CharField)的单个输入。
我想要什么?
't(es)t'
作为字符串变量。'test'
保存到数据库答案 0 :(得分:6)
尝试覆盖模型中的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)
<强>更新强>
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)