J'ai une question à propos de django.
J'ai ici des modèles ManyToMany
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)
Pour un objet panier créé, je peux insérer autant de nouveaux objets TransactionDetail (le produit et le montant). Ma question est la suivante. Comment puis-je mettre en œuvre le déclencheur ? Ce que je veux, c'est qu'à chaque fois qu'un détail de transaction est créé, je veux que le montant du stock du produit soit soustrait du montant dans le détail de transaction.
J'ai lu des choses sur post_save() mais je ne suis pas sûr de savoir comment l'implémenter. Peut-être quelque chose comme ceci
quand :
post_save(TransactionDetail,
Cart) #Cart object where TransactionDetail.cart= Cart.id
Cart.stock -= TransactionDetail.amount