我想输入类似(通过管理页面)的内容:
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) 的单个输入。
我想要什么?
- 将
't(es)t'
用作字符串变量。 - 保存
'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/