Справочная информация:
У меня есть проект Django, который использует restful api для отправки пользовательских данных. Эти данные поступают с нескольких разных устройств и состоят из имени игрока и оценки. Ниже приведена версия моделей.
class User(models.Model):
full_name = models.TextField(null=True, blank=True)
device = models.TextField(null=True, blank=True)
class Score(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="scores")
score = models.CharField(max_length=64, blank=True, null=True)
timestamp = models.DateTimeField(null=True)
Теперь я хочу, чтобы сайт вычислял некоторые сводные статистические данные пользователей на основе оценок и сохранял их в другой таблице, на которую я могу ссылаться в другом месте на сайте. Это будет называться что-то вроде UserStats и содержит данные, которые нельзя просто агрегировать, запрашивая результаты. Такие вещи, как количество игр, которые потребуют обработки через счета.
class UserStats(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name="stats")
number_of_games = models.IntegerField(default=0)
Вопрос:
Мой вопрос заключается в том, как лучше всего обрабатывать входящие Результаты на сервере? По сути, как только появляется новый счет, я хочу обработать его и обновить поля в модели UserStats.
Методы, которые мне известны:
Добавить код к оценка API. Поэтому при отправке баллов он проверяет модель UserStats и создает или обновляет ее.
устанавливает фоновую задачу, которая проверяет наличие новых баллов, и обновляет модель UserStats. Потенциально это может включать добавление поля к оценкам, чтобы показать, было ли оно обработано или нет.
Если у кого-то есть какие-либо другие методы или примеры решений аналогичной проблемы, которые были бы намного оценили.