克隆模型 object 值 Django

Clone model object values Django

我想从现有模型中克隆值 object 并清理特殊字符的值以提供更好的搜索。所以我已经在数据库中有了我想要清理并存储在新的 object 之后的值。

这是一个代码示例:

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

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

我将 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)