Так что я работаю над интеграцией календаря 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 - более чистое решение.