मुझे सही दिशा में इंगित करने के लिए @Alasdair को धन्यवाद।
inst
. की फ़ील्ड भरने के बाद (एक नया Expense
), करो:
with transaction.atomic():
project = models.Project.objects.select_for_update().get(
pk=project_id)
cost = project.total_cost()
budget = project.budget
if cost + inst.cost > budget:
raise forms.ValidationError(_('Over-budget'))
self._inst.save()
ध्यान दें कि मेरे पास total_cost
है Project
. पर एक विधि के रूप में परिभाषित किया गया है :
class Project:
def total_cost(self):
return self.expense_set.all().aggregate(
t=Sum(F('cost')))['t']