Django - 如何在将文本保存到数据库之前修改文本? [英] Django - How can i modify text before save them to database?
本文介绍了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).
我想要什么?
- 使用
't(es)t'
作为字符串变量. - 将
'test'
保存到数据库
- To use
't(es)t'
as a string variable. - 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屋!
查看全文