Credo che il left join possa aiutare in questa situazione. Il tuo obiettivo è ordinare le città entro l'ultimo punto PM.
Assumendo la chiave primaria della tua city
table è city_id e una tabella separata chiamata city_pm
detiene i punti PM e che hai due modelli City e City_Pm...
A tuo avviso:
cities = City.objects.all()
Nei tuoi modelli:
class City(models.Model):
# fields ...
def get_latest_pm(self):
try:
return City_Pm.objects.filter(city_id=self.pk).order_by("-date")[:1].get()
except:
return None
Nel tuo modello:
{% for city in cities %}
{{ city.get_latest_pm }}
{% endfor %}