Pgtrigger для обновления столбца другой таблицы значением COUNT
Я пытаюсь использовать триггеры для отслеживания общего количества реакций на модели Video
. Всякий раз, когда модель Reaction
получает INSERT или UPDATE запрос реакции, она должна обновлять счетчик реакции видео со значением, возвращенным из функции COUNT. Я просто не могу понять, как сделать простой оператор/функцию обновления Video
. Нужна помощь.
Текущий код:
class Video(models.Model):
...
reaction_count = models.IntegerField(default=0, null=False, blank=False, unique=False)
class VideoReaction(models.Model):
class Meta:
db_table = "video_reaction"
triggers = [
pgtrigger.Trigger(
name = "VideoReaction_TRIGGER_count",
when = pgtrigger.After,
operation = pgtrigger.Insert | pgtrigger.Update,
func = "id_video__reaction_count = COUNT(reaction)"
)
]
id = models.CharField(max_length=10, primary_key=True, null=False, blank=False, unique=True)
id_user = models.ForeignKey(User, db_column="id_user", on_delete=models.CASCADE)
id_video = models.ForeignKey(Video, db_column="id_video", on_delete=models.CASCADE)
reaction = models.BooleanField(null=False, blank=False)
...