После небольшого переписывания
query = self.project.jobrecord_set.filter(
date__lte=date,
date__gte=self.start_date)
values= ( jobrecord.get_cost() or 0 for jobrecord in query or 0 )
return sum( values )
Посмотрите внимательно на values= ( jobrecord.get_cost() or 0 for jobrecord in query or 0 )
Что происходит, когда запрос пуст?
Вы оцениваете jobrecord.get_cost() or 0 for jobrecord in 0