I took suggestions provided by sfletche about using annotate and discussed the problem in freenode.net irc channel #django.
Users FunkyBob and jtiai were able to help me getting it working.
Since there can be many appointments for each work order, when we ask it to order by appointments, it will return a row for every instance of appointment since it doesn't know which appointment I was intending for it to order by.
from django.db.models import Max
WorkOrder.objects.annotate(max_date=Max('appointment__start')).filter(work_order_status="complete").order_by('max_date')
So, we were on the right path it was just about getting the syntax correct.
Thank you for the help sfletche, FunkyBob and jtiai.