это старый, но я не уверен точно, почему у вас есть 2 отдельные таблицы (Очки добавлены и действие). Уже поздно, поэтому, возможно, мой разум не тикает, но кажется, что по какой-то причине вы просто разделили одну таблицу на две. Не похоже, что вы получаете какую-то выгоду от этого. Не похоже, что в этом есть отношение 1 ко многим, верно?
Итак, прежде всего, я бы объединил эти две таблицы. Во-вторых, вам, вероятно, лучше сохранить points_total в значение в вашей таблице site_user. Это то, на что, как мне кажется, пытается навязать Деметрий, но не сказал прямо. Таким образом, вместо выполнения всего этого дополнительного запроса (извлечение всего, что пользователь сделал в своей истории сайта - это дорого) + зацикливание (проходить через него еще дороже), вы можете просто перетащить его в одно поле. Это денормализует данные для большего блага.
Обязательно обновляйте значение каждый раз, когда добавляете что-то, что имеет баллы. Вы можете использовать сигнал django post_save, чтобы сделать это