克隆模型对象值Django

问题描述

我想从现有模型对象中克隆值,并清理特殊字符的值以提供更好的搜索。因此,我已经在数据库中具有要清理的值,然后将其存储在新对象中。

这是一个代码示例:

class Entry(models.Model):
    headline = models.CharField(max_length=255)
    sanitized_headline = models.CharField(max_length=255)

我想在克隆之前将一些re.sub('č','c',headline)这样的字符替换应用于标题之后,用相应的标题值填充所有sanitized_headline对象,并对每个新条目都这样做。

我无法通过视图来使用Django替换GraphQl API字符。

谢谢

解决方法

要清理现有对象,请执行以下操作:[只要您具有清理名为sanitize的文本的功能]

输入您的Django Shell(使用python manage.py shell)并导入Entry模型。然后:

all_entries = Entry.objects.all()
for obj in all_entries:
    obj.sanitized_headline = sanitize(obj.headline)
    obj.save()

要自动清理新对象,您必须覆盖保存方法:

class Entry(models.Model):
    headline = models.CharField(max_length=255)
    sanitized_headline = models.CharField(max_length=255)

    def save(self,*args,**kwargs):
        self.sanitized_headline = sanitize(self.headline)
        super().save(*args,**kwargs)