Событие для сохранения последнего объекта через Django formset

У меня есть сигнал, который слушает модель, отношение которой к другой модели выглядит так

class Model1(models.Model):
    field1 = models.CharField(max_length=4)

class ChildToModel1(models.Model):
    model_1 = models.ForeinKey(Model1, related_name='model_1', on_delete=models.CASCADE)

Теперь у меня inlineformset_factory для ChildToModel1 согласно django вызов save для ChildToModel1 inlineformset_factory сохранит несколько экземпляров ChildToModel1, как будто это forloop. Если у меня есть, например, 3 набора форм, есть ли способ проверить общее количество объектов после общего сохранения, а не при каждом сохранении, я обращаюсь к ним по сигналу post_save модели.

печать ChildToModel1 на сигнал post_save возвращает что-то вроде этого

<QuerySet [obj]>
<QuerySet [obj][obj]>
<QuerySet [obj][obj][obj]>

Что я действительно хочу:

<QuerySet [obj][obj][obj]>

Вы можете включить другой сигнал вручную в конце.

Сначала определите новый сигнал: https://docs.djangoproject.com/en/4.0/topics/signals/#defining-signals

import django.dispatch

post_save_after_last = django.dispatch.Signal()

а затем импортировать его и запустить

from somewhere import post_save_after_last

last_instance = ChildToModel1(field='qwerty')
post_save_after_last.send(sender=ChildToModel1, instance=instance)

Подробнее вы можете прочитать здесь: https://docs.djangoproject.com/en/4.0/topics/signals/#sending-signals

Вернуться на верх