Răsfoiți Sursa

Closes #6189: Add ability to search for locations by name or description

jeremystretch 4 ani în urmă
părinte
comite
620d222f98
3 a modificat fișierele cu 16 adăugiri și 0 ștergeri
  1. 4 0
      docs/release-notes/version-2.11.md
  2. 8 0
      netbox/dcim/filters.py
  3. 4 0
      netbox/dcim/forms.py

+ 4 - 0
docs/release-notes/version-2.11.md

@@ -2,6 +2,10 @@
 
 
 ## v2.11.1 (FUTURE)
 ## v2.11.1 (FUTURE)
 
 
+### Enhancements
+
+* [#6189](https://github.com/netbox-community/netbox/issues/6189) - Add ability to search for locations by name or description
+
 ### Bug Fixes
 ### Bug Fixes
 
 
 * [#6184](https://github.com/netbox-community/netbox/issues/6184) - Fix parent object table column in prefix IP addresses list
 * [#6184](https://github.com/netbox-community/netbox/issues/6184) - Fix parent object table column in prefix IP addresses list

+ 8 - 0
netbox/dcim/filters.py

@@ -209,6 +209,14 @@ class LocationFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
         model = Location
         model = Location
         fields = ['id', 'name', 'slug', 'description']
         fields = ['id', 'name', 'slug', 'description']
 
 
+    def search(self, queryset, name, value):
+        if not value.strip():
+            return queryset
+        return queryset.filter(
+            Q(name__icontains=value) |
+            Q(description__icontains=value)
+        )
+
 
 
 class RackRoleFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 class RackRoleFilterSet(BaseFilterSet, NameSlugSearchFilterSet):
 
 

+ 4 - 0
netbox/dcim/forms.py

@@ -559,6 +559,10 @@ class LocationBulkEditForm(BootstrapMixin, CustomFieldBulkEditForm):
 
 
 class LocationFilterForm(BootstrapMixin, CustomFieldFilterForm):
 class LocationFilterForm(BootstrapMixin, CustomFieldFilterForm):
     model = Location
     model = Location
+    q = forms.CharField(
+        required=False,
+        label=_('Search')
+    )
     region_id = DynamicModelMultipleChoiceField(
     region_id = DynamicModelMultipleChoiceField(
         queryset=Region.objects.all(),
         queryset=Region.objects.all(),
         required=False,
         required=False,