Итак, обычно для других моделей я следую следующему шаблону:
Код: Выделить всё
class Model1(models.Model):
...
fields
...
def save(self. *args, **kwargs):
self.is_new = self._state.adding
super().save(*args, **kwargs)
self.post_save()
def post_save(self):
if self.is_new:
# Trigger webhook with self object as the payload.
trigger_webhook(self)
Код: Выделить всё
class Model2(models.Model):
...
fields
m2m_field = models.ManyToManyField(
Model3,
through="Model1Model2",
blank=True,
related_name="...",
)
...
Код: Выделить всё
@receiver(m2m_changed, sender=Model1Model2)
def signal_ready(sender, instance, action, **kwargs):
if action not in ("post_add", "post_remove", "post_clear"):
return
trigger_model_webhook(instance)
Существуют ли какие-либо другие возможные подходы для этого, где мы можем добавить условную проверку, чтобы увидеть, получаем ли мы изменение поля m2m или нет? Если мы получим изменение, мы позволим сигналу обработать его, в противном случае мы активируем его вручную с помощью post_save().
Или другой подход, который позволяет нам запрашивать вновь созданный объект отдельно после его создания/обновления, а затем запускать вебхук.
Будем благодарны за любую помощь.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/798 ... bject-save
Мобильная версия