I’m having a trouble on how can I automatically update my amount_unpaid
when the time I updated my amount_paid
column. The result of amount_unpaid should be subtract my amount
– amount_paid
= amount_unpaid
. The way I updated my data is using list like the code below, please check this out, Any help is much appreciated Thanks in advance.
AttributeError: ‘QuerySet’ object has no attribute ‘amount’
def update_remarks(request): product_ids = request.POST.getlist('id[]') amt_paid = request.POST.get('amount_paid') for id in product_ids: unpaid_update = (Person.objects.filter(pk=id).amount - amt_paid) #Error no attribute Amount Person.objects.filter(pk=id).update(amount_paid = unpaid_update) # this should update every amount_unpaid based on subtracted amount column Person.objects.filter(pk=id).update(amount_paid = amt_paid)
Advertisement
Answer
I think the minimalist solution is:
from django.db.models import F def update_remarks(request): product_ids = request.POST.getlist('id[]') amt_paid = int(request.POST.get('amount_paid', 0)) Person.objects.filter(pk__in=product_ids).update(amount_paid=amt_paid, amount_unpaid=F('amount')-amt_paid)
I am using F(<field_name>)
to get the value of the field from that object. Hence I do not need a for loop.
For more information, please see the documentation on update(...)
and F()
.