How to use Post_save in Django
我试图在用户提交评论后,使用django评论框架向他们的个人资料添加点。我想我需要使用后保存,但不一定要完全诚实。
以下是我在models.py中的方法:
1 2 3 4 | def add_points(request, Comment): if Comment.post_save(): request.user.get_profile().points += 2 request.user.get_profile().save() |
从我发现的post_save的例子来看,这与显示的情况相差甚远,所以我认为我离目标还很远。
谢谢你的帮助。
不幸的是,这完全没有意义。
首先,这不能是一个方法,因为它没有
第二,它似乎是在上课,而不是举个例子。不能保存类本身,只能保存它的一个实例。
第三,
最后,添加2的配置文件实例不一定与第二行中保存的配置文件实例相同,因为django模型实例没有标识。获取一次并将其放入变量中,然后保存它。
comments框架定义了自己的信号,您可以使用它来代替一般的post-save。所以,你真正需要的是在评论上注册一个信号处理程序。在这个处理程序中,您需要获取用户的配置文件,并对其进行更新。
1 2 3 4 5 6 7 | 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) |