как группировать различные обновления модели при прослушивании post_save в изменениях - PullRequest
0 голосов
/ 01 мая 2019

В моем приложении куча моделей, для которых я слушаю изменения с post_save.Кроме того, у меня есть поле updated_at для всех тех, которое является отметкой времени, которая будет обновляться при каждой операции сохранения.

Предполагается, что модель Question имеет отношение один-два-много к модели Answer.происходит следующее:

Если я добавлю Answer, то post_save будет запущено для обеих моделей (из-за обновления отметки времени на Question).В моем случае использования мне нужно знать, был ли изменен сам Question (в дополнение к updated_at) или если post_save был запущен только потому, что был добавлен Answer.

Есть ли чистыйспособ достичь этого?

1 Ответ

1 голос
/ 01 мая 2019

На самом деле я думаю, что вы можете использовать update_fields аргумент, чтобы проверить, какие поля вопроса были изменены

@receiver(post_save, sender=Question)
def tri_qu(sender, update_fields, created, instance, **kwargs):
    if not created and update_fields and update_fields == ['updated_at']:
        # ... post_save where triggered, because of answer was added
...