Jeg tog imod forslag fra sfletche om brug af annotate og diskuterede problemet i freenode.net irc channel #django.
Brugerne FunkyBob og jtiai var i stand til at hjælpe mig med at få det til at fungere.
Da der kan være mange aftaler for hver arbejdsordre, når vi beder den om at bestille efter aftaler, vil den returnere en række for hver forekomst af aftale, da den ikke ved, hvilken aftale jeg havde til hensigt at bestille 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å rette vej, det handlede bare om at få syntaksen korrekt.
Tak for hjælpen sfletche, FunkyBob og jtiai.