Ich habe eine Frage zu Django.Django post_save() Signalimplementierung
I ManyToMany Models hier
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)
Für 1 Warenkorb Objekt erstellt haben, kann ich so viele wie neue TransactionDetail Objekt (das Produkt und Menge) ein. Meine Frage ist. Wie kann ich den Trigger implementieren? Was ich möchte ist, wenn ein Transaktionsdetail erstellt wird, möchte ich, dass der Betrag des Produktbestands durch den Betrag im Transaktionsdetail subtrahiert wird.
Ich habe gelesen über post_save(), aber ich bin mir nicht sicher, wie man es implementiert. vielleicht so etwas wie dieses
wenn: post_save (TransactionDetail, Wagen) #Cart Objekt wo TransactionDetail.cart = Cart.id
Cart.stock -= TransactionDetail.amount
Sie werden wahrscheinlich in Rennbedingungen geraten, wenn Sie es so machen. –