瀏覽代碼

Add LTE and GTE filters for prefix mask length

Jeremy Stretch 5 年之前
父節點
當前提交
e8df9be702
共有 1 個文件被更改,包括 10 次插入7 次删除
  1. 10 7
      netbox/ipam/filters.py

+ 10 - 7
netbox/ipam/filters.py

@@ -144,8 +144,16 @@ class PrefixFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, Cre
         label='Prefixes which contain this prefix or IP',
     )
     mask_length = django_filters.NumberFilter(
-        method='filter_mask_length',
-        label='Mask length',
+        field_name='prefix',
+        lookup_expr='net_mask_length'
+    )
+    mask_length__gte = django_filters.NumberFilter(
+        field_name='prefix',
+        lookup_expr='net_mask_length__gte'
+    )
+    mask_length__lte = django_filters.NumberFilter(
+        field_name='prefix',
+        lookup_expr='net_mask_length__lte'
     )
     vrf_id = django_filters.ModelMultipleChoiceFilter(
         queryset=VRF.objects.all(),
@@ -262,11 +270,6 @@ class PrefixFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, Cre
         except (AddrFormatError, ValueError):
             return queryset.none()
 
-    def filter_mask_length(self, queryset, name, value):
-        if not value:
-            return queryset
-        return queryset.filter(prefix__net_mask_length=value)
-
 
 class IPAddressFilterSet(BaseFilterSet, TenancyFilterSet, CustomFieldFilterSet, CreatedUpdatedFilterSet):
     q = django_filters.CharFilter(