Django pre_save или post_svae не запускаются через модель, но post_delete является - PullRequest
0 голосов
/ 26 апреля 2020

Так что я работаю над интеграцией календаря Google. У меня есть пользователи и смены, и в сквозной модели я хочу добавить google_calendar_id. Итак, сейчас у меня есть сквозная модель

class ShiftUser(models.Model):
    shift = models.ForeignKey("shift.Shift", models.DO_NOTHING, related_name="shift_users")
    user = models.ForeignKey(User, models.DO_NOTHING, related_name="user_shifts")
    google_calendar_id = models.CharField(max_length=1024, null=True)

    class Meta:
        unique_together = (("shift", "user"),)

Но метод сохранения не работает на сквозной модели, поэтому я добавил pre_save на модель:

@receiver(pre_save, sender=ShiftUser)
def shift_user_change(instance, **kwargs):
    GoogleIntegration.create_event(instance)

Я попробовал это подход с pre_save и post_save, но оба не срабатывают. Но когда я использую post_delete, это работает. Кто-нибудь знает, почему это так?

Для записи. Я попробовал m2m_changed, но мне нужно знать, какие пользователи изменились, и из того, что я собрал, я не могу сделать это без выполнения двух запросов на изменение в отношениях. Это, конечно, не самое худшее, но я думаю, pre_save - более чистое решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...