Skip to content

Commit

Permalink
Fixes #460: For real this time
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremystretch committed Aug 15, 2016
1 parent 4f774f8 commit 8faa16c
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions netbox/ipam/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -302,10 +302,12 @@ def get_queryset(self):
"""
By default, PostgreSQL will order INETs with shorter (larger) prefix lengths ahead of those with longer
(smaller) masks. This makes no sense when ordering IPs, which should be ordered solely by family and host
address. Here, we alter the default ordering to use HOST(address) instead of the raw address value.
address. We can use HOST() to extract just the host portion of the address (ignoring its mask), but we must
then re-cast this value to INET() so that records will be ordered properly. We are essentially re-casting each
IP address as a /32 or /128.
"""
qs = super(IPAddressManager, self).get_queryset()
return qs.annotate(host=RawSQL('HOST(ipam_ipaddress.address)', [])).order_by('family', 'host')
return qs.annotate(host=RawSQL('INET(HOST(ipam_ipaddress.address))', [])).order_by('family', 'host')


class IPAddress(CreatedUpdatedModel):
Expand Down

0 comments on commit 8faa16c

Please sign in to comment.