这是我的模特
class Stock_Total(models.Model):
purchases = models.ForeignKey(Purchase,on_delete=models.CASCADE,null=True,blank=True,related_name='purchasetotal')
stockitem = models.ForeignKey(Stockdata,on_delete=models.CASCADE,null=True,blank=True,related_name='purchasestock')
gst_rate = models.DecimalField(max_digits=4,decimal_places=2,default=5)
@receiver(pre_save, sender=Stock_Total)
def update_gst_rate(sender, instance, *args, **kwargs):
instance.gst_rate = instance.stockitem.gst_rate
@receiver(post_save, sender=Purchase)
def trigger_gst(sender, instance, *args, **kwargs):
instance.purchasetotal.save()
“ Purchase”和“ Stockdata”是我创建的其他模型...我只想在保存“ Purchase”模型时保存Stock_Total模型,即当我在“ Purchase”模型上单击“ Save”时,Stock_Total模型将自动更新以及购买模式...
有人知道吗?
答案 0 :(得分:0)
只要保存购买模型,我只想保存Stock_Total模型
您不需要信号。见下文;名称已更改,以保护PEP 8。
class StockTotal(models.Model):
purchases = models.ForeignKey(
Purchase,
on_delete=models.CASCADE,
null=True,
blank=True,
related_name='stock_totals',
)
# ...
class Purchase(models.Model):
# ...
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
for total in self.stock_totals.all():
# Do whatever updates you want here
total.save()
请注意,这里的total
值将是数据库值;它们将通过[related_name].all()
调用重新获得。
我不清楚您要做什么。保存关联的StockTotal
对象时,如果要在Purchase
实例上编辑值,则可以使用;如果您只想确保维持m2m关系,则无需为此做任何事情。
如果这没有帮助,请修改您的问题以澄清问题。