Выполнение расчета в отношениях один ко многим - PullRequest
0 голосов
/ 03 ноября 2019

У меня есть две модели, и я пытаюсь вычесть значение одного поля из другого при обновлении формы. Поля находятся в отдельных моделях, у меня есть форма, которая используется для сохранения изменений, внесенных в модель NewLeave, и я хочу иметь возможность вычесть значение Leave_current_balance в модели Leave_Balance с Total_working_days в модели NewLeave и сохранить обновление значения 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()

1 Ответ

0 голосов
/ 03 ноября 2019

Я сделал некоторые изменения в методе расчета баланса, чтобы исправить это.

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...