Tomé las sugerencias proporcionadas por sfletche sobre el uso de anotaciones y discutí el problema en el canal IRC de freenode.net #django.
Los usuarios FunkyBob y jtiai pudieron ayudarme a hacerlo funcionar.
Dado que puede haber muchas citas para cada orden de trabajo, cuando le pedimos que ordene por citas, devolverá una fila para cada instancia de cita, ya que no sabe para qué cita tenía la intención de ordenar.
from django.db.models import Max
WorkOrder.objects.annotate(max_date=Max('appointment__start')).filter(work_order_status="complete").order_by('max_date')
Entonces, estábamos en el camino correcto, solo se trataba de obtener la sintaxis correcta.
Gracias por la ayuda sfletche, FunkyBob y jtiai.