代码之家  ›  专栏  ›  技术社区  ›  James

Django信号不工作

  •  0
  • James  · 技术社区  · 7 年前

    我有一个自定义函数,当信用添加到CreditsHistory表时运行,该表由信号调用:

    def update_credits(sender, instance=None, **kwargs):
        if instance is None:
            return
        sum = CreditsHistory.objects.filter(member=instance.member).aggregate(Sum('credits_amount'))
        instance.member.n_credits = sum['credits_amount__sum']
        instance.member.save()
    
    post_save.connect(update_credits, sender=CreditsHistory)
    post_delete.connect(update_credits, sender=CreditsHistory)
    

    某些成员的信用每天都会更新,但对于获得新的CreditHistory实例的所有成员,不会更新成员模型中的n_信用字段。我想可能发生了某种超时,或者数据库无法处理多个成员的大型CreditsHistory表的聚合。。我如何调试它?

    编辑:

    class CreditsHistory(models.Model):
        member = models.ForeignKey(Member)
        credits_amount = models.IntegerField()
        date = models.DateTimeField(auto_now=True, editable=False)
        notes = models.TextField(blank=True, null=True)
    
        class Meta:
            ordering = ['-date']
            verbose_name_plural  = "Credit History"
    
        def __unicode__(self):
            return  u'credits-history/%s' % self.member.user.username
    
        @classmethod
        def create(cls, member, credits_amount, date, notes):
            creditshistory = cls(member=member, credits_amount=credits_amount, date=date, notes=notes)
            return creditshistory
    
    0 回复  |  直到 7 年前