在Django

时间:2017-03-24 13:08:06

标签: javascript python django

我有两个型号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中完成吗?

1 个答案:

答案 0 :(得分:1)

" Django应该在保存"

之前显示用户将在amount_to_pay字段中支付的总金额

这不是django更新客户端视图的目标。 pre_save方法不会更新模板。

如果您想告知用户有关amount_to_pay的信息,您需要在客户端使用Javascript进行操作。