0

我有两个模型账单付款,每个模型都有 3 个字段。在这里,我想在用户支付账单时直接更新字段 last_price。如果用户支付全部金额,那么它将为 0。或者如果用户没有支付全部金额,则剩余金额希望保存在 last_price 中。所以在这里我想在用户支付账单时直接更新 last_bill 的金额。

注意:两种型号都在单独的应用程序中

我的领域是:

BillApp/模型

 Bill(model.Model):
      bill_no = models.IntegerField(max_length = 100,primary_key=True)
      last_price = models.IntegerField()
      Name = models.CharField(max_length = 20)

支付应用程序/模型

Payment(model.Model):
  id = models.CharField(max_length = 100,primary_key=True)
  bill_no = models.ForeignKey(Bill, on_delete = SET_NULL,null=True)
  total_amount = models.CharField(max_length = 10)
  
def save(...):
       Update value of Bill.last_price

如何在保存方法中更新 Bill.last_price 的值

我试过这个更新字段 last_price

 def save(self,*args, **kwargs):
     new_last_price =  self.total_amount -  self.bill_no.last_price
     print("new_last_price : ",new_last_price)
     bill_detail = Bill.objects.filter(bill_no=self.bill_no).first()
     print("bill_detail : ",bill_detail)

     try:
         with transaction.atomic():
         updated_field = bill_detail.save(update_fields = ['last_price'])
         print("updated_field : ", updated_field)
         super().save(*args, **kwargs)
         print(Bill.objects.filter(bill_no=self.bill_no).first().last_price)
     except IntegrityError:
         print('Exception in save')

得到了 new_last_price 和 bill_detail 的正确输出..updated_field 显示 None .. 如何在 Bill 中保存新值?

4

1 回答 1

0

您的 save 方法将保存数据并刷新对象实例,但不会返回对象实例。使用直接显示最后价格。

bill_detail.save(update_fields = ['last_price'])
print(bill_detail.last_price)
于 2021-08-30T16:19:31.340 回答