from django.db.models import F, Func, Value class Replace(Func): function = 'REPLACE' def __init__(self, expression, text, replacement=None): if not hasattr(expression, 'resolve_expression'): raise ValueError('Please pass a valid expression') if text is None: raise ValueError('Replacing null does not seem sane ...') self.text = Value(text) self.replacement = Value('' if replacement is None else replacement) self.expression = expression super().__init__(self.expression, self.text, self.replacement) # it's then possible to use it to replace text in expressions: Customer.objects.filter(name='Bert').update(name=Replace(F('name'), 'Bert', 'Ernie')