querysets.py 625 B

1234567891011121314151617
  1. from django.db.models import OuterRef, Subquery
  2. from utilities.querysets import RestrictedQuerySet
  3. class CircuitQuerySet(RestrictedQuerySet):
  4. def annotate_sites(self):
  5. """
  6. Annotate the A and Z termination site names for ordering.
  7. """
  8. from circuits.models import CircuitTermination
  9. _terminations = CircuitTermination.objects.filter(circuit=OuterRef('pk'))
  10. return self.annotate(
  11. a_side=Subquery(_terminations.filter(term_side='A').values('site__name')[:1]),
  12. z_side=Subquery(_terminations.filter(term_side='Z').values('site__name')[:1]),
  13. )