首页 文章

基于其他模型字段自动更新Django Model

提问于
浏览
3

根据另一个模型的结果更新模型字段的最佳方法是什么 .

即我有以下,

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.totalValidateResult.number 中所有字段的总数 . 我想将其写入模型中,因此每次更新 ValidateResults 模型时都会自动更新 TotalResult 模型中的总计 .

有任何想法吗 ?

谢谢,

1 回答

  • 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):
        ...
    

相关问题