首页 > 解决方案 > 在一对多关系中执行计算

问题描述

我有两个模型,当更新表单时,我尝试用另一个字段减去一个字段的值。这些字段位于单独的模型中,我有一个表单用于保存对 NewLeave 模型所做的更改,我希望能够用 NewLeave 模型中的 Total_working_days 减去 Leave_Balance 模型中 Leave_current_balance 的值并保存更新 Leave_current_balance 值. 目前,当表单更新时,我想调用执行计算但它不起作用的 calculateBalance 方法。

class Leave_Balance(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True, )
    Outstanding_balance = models.FloatField(null=True, blank=True, default=None)
    Monthly_entitlement = models.FloatField(null=True, blank=True, default=None)
    Monthly_consumption = models.FloatField(null=True, blank=True, default=None)
    Leave_current_balance = models.FloatField(null=True, blank=True, default=None)
   


class NewLeave(models.Model):
    user = models.ForeignKey(User, default='', on_delete=models.CASCADE)
    leave_balance = models.ManyToManyField(Leave_Balance)
    Total_working_days = models.FloatField(null=True, blank=False)
    
 

   

def unitDirectorForm(request, staffs_id):
    if request.method == 'POST':
        getstaffid = NewLeave.objects.get(id=staffs_id)
        form = DirectorForm(request.POST, instance=getstaffid)

        if form.is_valid():
            calculateBalance(getstaffid)
            form.save()

            return HttpResponse('You have successfully Authorise the leave')

    else:
        getstaffid = NewLeave.objects.get(id=staffs_id)
        form = DirectorForm(instance=getstaffid)

    return render(request, 'director_authorize_form.html', {'form': form})


def calculateBalance(staff_id):
    update_balance = staff_id

    update_balance.leave_balance.Leave_current_balance = update_balance.leave_balance. Leave_current_balance - 	update_balance.Total_working_days
    update_balance.save()

标签: pythondjango

解决方案


我对 calculatebalance 方法进行了一些更改来修复它。

def calculateBalance(staff_id):
    update_balance = staff_id
    set_user = update_balance.user
    get_user = Leave_Balance.objects.get(user=set_user)
    get_user.Leave_current_balance = get_user.Leave_current_balance - update_balance.Total_working_days
    get_user.save()


推荐阅读