From 8981e8b292285e90f33b4b0f357faacc5536ecba Mon Sep 17 00:00:00 2001 From: dansheps Date: Fri, 22 Feb 2019 21:39:44 -0600 Subject: [PATCH] Fixes #2781: Fixes filter by regions on site and device list --- CHANGELOG.md | 1 + netbox/dcim/filters.py | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b2a5445fe..02a2c7479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ v2.5.8 (FUTURE) ## Bug Fixes +* [#2781](https://github.com/digitalocean/netbox/issues/2781) - Filtering sites by multiple regions * [#2923](https://github.com/digitalocean/netbox/issues/2923) - Provider filter form's site field should be blank by default --- diff --git a/netbox/dcim/filters.py b/netbox/dcim/filters.py index 96ecefafd..3e3200aa8 100644 --- a/netbox/dcim/filters.py +++ b/netbox/dcim/filters.py @@ -49,14 +49,14 @@ class SiteFilter(CustomFieldFilterSet, django_filters.FilterSet): choices=SITE_STATUS_CHOICES, null_value=None ) - region_id = django_filters.NumberFilter( - method='filter_region', - field_name='pk', + region_id = django_filters.ModelMultipleChoiceFilter( + queryset=Region.objects.all(), label='Region (ID)', ) - region = django_filters.CharFilter( - method='filter_region', - field_name='slug', + region = django_filters.ModelMultipleChoiceFilter( + field_name='region__slug', + queryset=Region.objects.all(), + to_field_name='slug', label='Region (slug)', ) tenant_id = django_filters.ModelMultipleChoiceFilter( @@ -513,14 +513,16 @@ class DeviceFilter(CustomFieldFilterSet): ) name = NullableCharFieldFilter() asset_tag = NullableCharFieldFilter() - region_id = django_filters.NumberFilter( - method='filter_region', - field_name='pk', + region_id = django_filters.ModelMultipleChoiceFilter( + field_name='site__region__id', + queryset=Region.objects.all(), + to_field_name='id', label='Region (ID)', ) - region = django_filters.CharFilter( - method='filter_region', - field_name='slug', + region = django_filters.ModelMultipleChoiceFilter( + field_name='site__region__slug', + queryset=Region.objects.all(), + to_field_name='slug', label='Region (slug)', ) site_id = django_filters.ModelMultipleChoiceFilter(