【发布时间】:2016-05-26 04:12:09
【问题描述】:
我遇到了以下代码的问题:
class Cart(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)
items = models.ManyToManyField(CC, blank=True)
total = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
def __str__(self):
return self.user.username
@receiver(pre_save, sender=Cart)
def cart_update_total(sender, instance, *args, **kwargs):
total = Decimal(0.00)
for item in instance.items.all():
total += item.price
instance.total = total
@receiver(user_activated)
def user_created(sender, user, request, **kwargs):
cart, created = Cart.objects.get_or_create(user=user)
所以基本上我为激活帐户的用户创建了一个Cart 模型。但我也在使用pre_save 信号Cart 计算购物车中产品的总价。因此pre_save 函数尝试访问尚未保存的对象的字段。你们能告诉我如何修改此逻辑以使其正常工作吗?
【问题讨论】:
-
为什么不使用 post_save 信号?
标签: django django-signals