我正在尝试将所有total
值添加到Transaction
模型中,并将它们放在Sale
模型的第一个实例(pk=1
)gross_total
字段中。这是我的代码。
models.py
class Sale(models.Model):
gross_total = models.FloatField()
def __unicode__(self):
return str(self.gross_total)
class Transaction(models.Model):
sale = models.ForeignKey('Sale')
price = models.FloatField()
quantity = models.IntegerField()
total = models.FloatField(blank=True, null=True)
def save(self):
self.total = self.price * self.quantity
return super(Transaction, self).save()
def __unicode__(self):
return str(self.total)
signal.py
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.db.models import Sum
from .models import Transaction, Sale
@receiver(post_save, sender=Transaction)
def update_sale(sender, **kwargs):
sale = Sale.objects.get(pk=1)
sale.gross_total = Transaction.objects.all().aggregate(Sum('total'))['total__sum']
sale.save()
我是使用Django Signals的新手。我做错了什么?如果保存Transaction
模型实例,则Sale
模型数据不会更新!
我对我的应用程序进行了以下更改以使其正常工作。
__init__.py
default_app_config = 'alpha.apps.MyAppConfig'
现在,在我的应用程序中创建一个apps.py。
apps.py
from django.apps import AppConfig
class MyAppConfig(AppConfig):
name = 'alpha'
verbose_name = 'Alpha'
def ready(self):
import alpha.signals
我不知道这一切如何运作,哈哈。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句