Jag tog emot förslag från sfletche om att använda annotate och diskuterade problemet i freenode.nets irc-kanal #django.
Användarna FunkyBob och jtiai kunde hjälpa mig att få det att fungera.
Eftersom det kan vara många möten för varje arbetsorder, när vi ber den att beställa efter möten, kommer den att returnera en rad för varje mötestillfälle eftersom den inte vet vilket möte jag hade för avsikt att den skulle beställa efter.
from django.db.models import Max
WorkOrder.objects.annotate(max_date=Max('appointment__start')).filter(work_order_status="complete").order_by('max_date')
Så vi var på rätt väg, det handlade bara om att få syntaxen korrekt.
Tack för hjälpen sfletche, FunkyBob och jtiai.