繁体   English   中英

在Django中动态更新具有另一个字段值的字段

[英]Update Field With Another Field Value Dynamically in 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)

现在,每当用户在no_of_product_needed字段中输入数字(例如2时,Django都应在保存之前在amount_to_pay字段中显示用户将支付的总金额。 因此,用户可以看到总金额,如果他/她想购买,则用户将单击“购买”,而Django会将总金额保存在amount_to_pay字段中。

我写了一个pre_save钩子,但是没有用。 每当我在no_of_product_needed字段中插入数字时,它都不会在amount_to_pay字段中显示总金额。

钩子

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中完成吗?

“ Django应该在保存之前在amount_to_pay字段中显示用户将支付的总金额”

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

如果您想通知用户有关amount_to_pay的信息,则需要在客户端使用Javascript来完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM