Django отправляет уведомление на основе взаимодействия с объектом

#django #django-rest-framework #notifications

Вопрос:

У меня есть сообщение, в котором мне нужно отправить уведомление,когда оно понравится в 1-й,5-й, 10-й,25-й,50-й раз. Я искал оптимальный способ для этого. То, что я имею в виду прямо сейчас, — это сохранить в модели что-то вроде

 first_interaction Boolean
fifth_interaction Boolean
So on..
 

Может ли быть лучший способ для этого?

Ответ №1:

Вот как бы я это сделал:

  1. Сохраните в своей модели счетчик лайков и количество отправленных уведомлений
  2. Отправляйте уведомление только в том случае, если значение счетчика % 5 верно
  3. Добавьте предыдущую логику в сигнал post_save или в метод model .save()

Другие примечания:

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

Комментарии:

1. В настоящее время у меня есть несколько реакций, таких как Facebook, поэтому в нем есть модель реакции с внешним ключом к этому сообщению. Хранение счетчика было бы дополнительной работой?

2. Вы можете избежать сохранения счетчика в базе данных и производить подсчет каждый раз непосредственно перед отправкой уведомления. Но что происходит, когда вы получаете 20 лайков одновременно? Вы отправляете 4 уведомления или только одно?

3. 4 уведомления, также это не будет %5 верно, может быть 1,5-е,10-е,25-е,100-е