Как отправить аргументы kwargs через метод .save() в сигнал post_save?

У меня есть две модели, Process и Notification, и мне нужно создать уведомление, когда процесс сохраняется, поэтому я использую сигнал post_save для этого:

def create_notification(sender, instance, *args, **kwargs):
    if instance.status in ["ERR", "FIN"] or instance.percent == 100:
        type = kwargs["type"]
        notification = Notification()
        notification.account = instance.owner
        notification.process = instance
        notification.status = "UNREAD"
        notification.content = instance.description
        notification.notification_type = type

        if instance.sub_processes.exists():
            for sub_process in instance.sub_processes.all():
                if sub_process.model_id != "":
                    notification.model_id = sub_process.model_id
                if sub_process.model_name != "":
                    notification.model_name = sub_process.model_name

        notification.save()

это работает нормально, но моя проблема в том, что мне нужно передать дополнительный аргумент, когда я сохраняю процесс, этот аргумент для объекта уведомления, который я создаю, который type поэтому каждый раз, когда я сохраняю объект Process (например, в представлении), я пытаюсь сделать что-то вроде этого process.save(type="EMM") но это не работает, строка type = kwargs["type"] в create_notification signal ничего не делает, так как я могу передать дополнительные аргументы в метод save?

возможно, это может сработать:

 # Process model
 def save(self, type=None, *args, **kwargs):
    ...
    
    self._type = type
    
    return super(Process, self).save(*args, **kwargs)



 # Process post_save
 def create_notification(sender, instance, *args, **kwargs):
   if instance._type is None:
      return

   if instance.status in ["ERR", "FIN"] or instance.percent == 100:
      type = instance._type
      notification = Notification()
      notification.account = instance.owner
      notification.process = instance
      notification.status = "UNREAD"
      notification.content = instance.description
      notification.notification_type = type

    if instance.sub_processes.exists():
        for sub_process in instance.sub_processes.all():
            if sub_process.model_id != "":
                notification.model_id = sub_process.model_id
            if sub_process.model_name != "":
                notification.model_name = sub_process.model_name

    notification.save()
Вернуться на верх