К сожалению, в этом нет никакого смысла.
Во-первых, это не может быть метод, так как в нем нет self
в качестве первого параметра.
Во-вторых, этоКажется, берут класс, а не экземпляр.Вы не можете сохранить сам класс, только его экземпляр.
В-третьих, post_save
не является методом модели (если вы не определили его самостоятельно).Это сигнал, и вы не вызываете сигнал, вы подключаете к нему обработчик сигнала и выполняете там логику.Вы также не можете вернуть данные из сигнала в метод.
И, наконец, экземпляр профиля, к которому вы добавляете 2, не обязательно будет таким же, как тот, который вы сохранили во второй строке, потому что Djangoэкземпляры модели не имеют идентичности.Получите его один раз и поместите в переменную, затем сохраните его.
Каркас комментариев определяет свои собственные сигналы , которые вы можете использовать вместо общего post_save.Итак, что вам действительно нужно, это зарегистрировать обработчик сигнала на comment_was_posted.Внутри этого обработчика вам нужно получить профиль пользователя и обновить его.
def comment_handler(sender, comment, request, **kwargs):
profile = request.user.get_profile()
profile.points += 2
profile.save()
from django.contrib.comments.signals import comment_was_posted
comment_was_posted.connect(comment_handler, sender=Comment)