我有4个模型:声誉、金徽章、银徽章和青铜徽章,当声誉模型得分达到100分时,想在青铜徽章模型中加1,这必须自动完成
这是我的模型
class reputation(models.Model):
score=models.BigIntegerField(default=0)
user=models.ForeignKey(User,on_delete=models.CASCADE,related_name="reputation_user")
def __str__(self):
return self.score
class goldBadge(models.Model):
score=models.BigIntegerField(default=0)
user=models.ForeignKey(User,on_delete=models.CASCADE,related_name="goldbadge_user")
def __str__(self):
return self.score
其他型号几乎相同
我担心的是,在保存信誉模型时,我们会首先检查分数是否大于或等于 100,如果是,则将铜牌的值增加 1
我只是 python 和 django 的初学者,所以你的帮助对我很有帮助,谢谢你的回答
答案 0 :(得分:0)
您可以创建一个帖子信号,该信号将根据声誉模型进行检查并更改青铜徽章模型。
可以在下面找到它的片段:
@receiver(post_save, sender=reputation)
def update_badge(sender, instance, created, **kwargs):
if instance.score > 100:
user_bronze = bronzebadge.objects.filter(user=instance.user)[0]
user_score = user_bronze.score + 1
user_bronze.score = user_score
user_bronze.save()
您可以找到信号教程 here。