Как задать пользовательский текст для функции django on_delete?

У меня есть модель с именем 'Клиенты' и другая модель с именем 'Информация'.

class Information(models.Model):
client_name = models.ForeignKey(Clients, on_delete=models.SET(get_deleted_client_intance))

Я хочу установить пользовательский текст, когда имя удаляется из модели 'Clients'.

Нижеприведенная функция создает новое имя 'deleted' как новую запись и сохраняется в модели 'Clients'. Я не хочу этого. Я хочу, чтобы при удалении имени на его месте было написано 'deleted' или 'removed'.

def get_deleted_client_intance():
return Clients.objects.get_or_create(name='deleted')[0]

Как я могу это сделать?

Мне кажется, вы немного неправильно понимаете аргумент ключевого слова on_delete. Согласно документации:

Когда объект, на который ссылается ForeignKey, удаляется, Django будет эмулировать поведение SQL-ограничения, указанного аргументом on_delete. Например, если у вас есть nullable ForeignKey и вы хотите, чтобы он устанавливался равным null, когда объект, на который ссылается ForeignKey, удаляется:

user = models.ForeignKey(
   User,
   on_delete=models.SET_NULL,
   blank=True,
   null=True,
)

Т.е. он обрабатывает некоторую логику при удалении ссылающегося объекта - устанавливает поле как null (SET_NULL), ограничивает удаление, если ссылающийся объект имеет дочерние объекты (PROTECT), удаляет и дочерние объекты (CASCADE), или устанавливает предпочтительное значение (SET) и т.д.

В вашем случае, если вы хотите изменить состояние объекта Clients, не нужно делать это в callable, передаваемом в models.SET, лучше сделать это на уровне объекта, например, переопределить метод delete:

class Clients(models.Model):
    ...


    def delete(self, using, *args, **kwargs):
        self.name = 'deleted'
        self.save(using=using)
Вернуться на верх