Tôi có câu hỏi về django.Thực hiện tín hiệu Django post_save()
Tôi có ManyToMany Models đây
class Product(models.Model):
name = models.CharField(max_length=255)
price = models.DecimalField(default=0.0, max_digits=9, decimal_places=2)
stock = models.IntegerField(default=0)
def __unicode__(self):
return self.name
class Cart(models.Model):
customer = models.ForeignKey(Customer)
products = models.ManyToManyField(Product, through='TransactionDetail')
t_date = models.DateField(default=datetime.now())
t_sum = models.FloatField(default=0.0)
def __unicode__(self):
return str(self.id)
class TransactionDetail(models.Model):
product = models.ForeignKey(Product)
cart = models.ForeignKey(Cart)
amount = models.IntegerField(default=0)
Đối với 1 giỏ đối tượng được tạo ra, tôi có thể chèn nhiều như đối tượng TransactionDetail mới (sản phẩm và số tiền). Câu hỏi của tôi là. Làm thế nào tôi có thể thực hiện kích hoạt? Những gì tôi muốn là bất cứ khi nào một chi tiết giao dịch được tạo ra, tôi muốn số lượng cổ phiếu của sản phẩm được trừ bằng số tiền trong transactiondetail.
Tôi đã đọc về post_save() nhưng tôi không chắc chắn cách triển khai. có lẽ một cái gì đó như thế này
khi: post_save (TransactionDetail, giỏ hàng) #Cart đối tượng nơi TransactionDetail.cart = Cart.id
Cart.stock -= TransactionDetail.amount
Bạn có khả năng chạy vào điều kiện cuộc đua nếu bạn làm theo cách đó. –