diff --git a/netbox/extras/fields.py b/netbox/extras/fields.py index ffd66801d..6cd44432f 100644 --- a/netbox/extras/fields.py +++ b/netbox/extras/fields.py @@ -1,7 +1,8 @@ from django.db.models import TextField + class CachedValueField(TextField): """ Currently a dummy field to prevent custom lookups being applied globally to TextField. """ - pass \ No newline at end of file + pass diff --git a/netbox/extras/lookups.py b/netbox/extras/lookups.py index a52ef2e8d..d4ed2b6a4 100644 --- a/netbox/extras/lookups.py +++ b/netbox/extras/lookups.py @@ -1,6 +1,7 @@ from django.db.models import CharField, TextField, Lookup from .fields import CachedValueField + class Empty(Lookup): """ Filter on whether a string is empty. @@ -26,5 +27,6 @@ class NetContainsOrEquals(Lookup): params = lhs_params + rhs_params return 'CAST(%s as inet) >>= %s' % (lhs, rhs), params + CharField.register_lookup(Empty) CachedValueField.register_lookup(NetContainsOrEquals) diff --git a/netbox/netbox/search/backends.py b/netbox/netbox/search/backends.py index 2e550a879..53a4fe683 100644 --- a/netbox/netbox/search/backends.py +++ b/netbox/netbox/search/backends.py @@ -108,7 +108,7 @@ class CachedValueSearchBackend(SearchBackend): if lookup == LookupTypes.PARTIAL: try: address = str(netaddr.IPNetwork(value.strip()).cidr) - query_filter |= Q(type=FieldTypes.CIDR) & Q(value__net_contains_or_equals=address) + query_filter |= Q(type=FieldTypes.CIDR) & Q(value__net_contains_or_equals=address) except (AddrFormatError, ValueError): pass