根据另一个模型的结果更新模型字段的最佳方法是什么。
即我有以下内容,
from django.db import models
class ValidateResult(models.Model):
number = models.IntegerField(unique=True)
version = models.CharField(max_length=100)
class TotalResult(models.Model):
total = models.IntegerField()
我要求的是TotalResults.total
是ValidateResult.number
中所有字段的总数。我想将其写入模型中,因此每次更新ValidateResults
模型时,都会自动更新TotalResult
模型中的总计。
有什么想法吗?
谢谢,
答案 0 :(得分:3)
您可以使用signals功能:
Django包含一个“信号调度程序”,它有助于在框架中的其他位置发生操作时通知解耦应用程序。简而言之,信号允许某些发送者通知一组接收器已经发生了某些动作。当许多代码可能对同一事件感兴趣时,它们特别有用。
django.db.models.signals
模块预定义模型系统发送的一组信号。您可以使用在模型save()
方法结束时触发的post_save
信号。
from django.db.models.signals import pre_save
from django.dispatch import receiver
from myapp.models import MyModel
@receiver(post_save, sender=ValidateResult)
def my_handler(sender, **kwargs):
...