Hi again folks,
I am trying to calculate a sum of work-years based on database entries. In the end, for each employee, there should be displayed his total work-time in the department based on one or more employments.
basically, I tried it with THIS:
class WorkYearsManager(models.Manager): def with_work_years(self): today = datetime.date.today() return self.annotate( past_years=ExpressionWrapper( (F('duty_end') - F('duty_begin')), output_field=fields.FloatField() )/86400/365.2425/1000000*F('percent')/100 ).annotate( ongoing_years=ExpressionWrapper( (today - F('duty_begin')), output_field=fields.FloatField() )/86400/365.2425/1000000*F('percent')/100 ) def total_work_years(self, employee): return self.with_work_years().filter(employee=employee).aggregate( total_work_years=Sum('past_years') + Sum('ongoing_years') )['total_work_years']
but of course, here will be calculatet the
duty_begin duration for EACH employment AND the
duty_begin duration also for EACH employment…which leads to a way too large sum.
So, i need to restrict the
ongoing_years calculation on the actual employment and the
past_years calculation to all former employments…