我有两个型号ModelA和ModelB
class ModelA(models.Model):
amount_per_product=models.PositiveIntegerField(default='', help_text="e.g 10000")
class ModelB(models.Model):
no_of_product_needed=models.PositiveIntegerField()
amount_to_pay=models.PositiveIntegerField()
modela=models.ForeignKey(ModelA)
现在,只要用户在2
字段中输入no_of_product_needed
这样的数字,Django就会在保存之前显示用户在amount_to_pay
字段中支付的总金额。因此,用户可以看到总金额,如果他/她想要购买,用户将点击购买,Django将在amount_to_pay
字段中保存总金额。
我写了一个pre_save钩子,但它没有用。每当我在no_of_product_needed
字段中插入一个数字时,它都不会显示amount_to_pay
字段中的总金额。
The Hook
class ModelB(models.Model):
no_of_product_needed=models.PositiveIntegerField()
amount_to_pay=models.PositiveIntegerField()
modela=models.ForeignKey(ModelA)
def __init__(self, *args, **kwargs):
super(ModelB, self).__init__(*args, **kwargs)
pre_save.connect(self.before_buying, sender=ModelB)
def before_buying(self, sender, instance, *args, **kwargs):
initial= self.modela.amount_per_product
amt_needed= self.no_of_product_needed
final_amt=int(initial) * int(amt_needed)
self.amount_to_pay= self.final_amt
我错过了什么?这可以在JS中完成吗?
答案 0 :(得分:1)
" Django应该在保存"
之前显示用户将在amount_to_pay字段中支付的总金额这不是django更新客户端视图的目标。 pre_save方法不会更新模板。
如果您想告知用户有关amount_to_pay的信息,您需要在客户端使用Javascript进行操作。