mirror of
				https://github.com/netbox-community/netbox.git
				synced 2024-05-10 07:54:54 +00:00 
			
		
		
		
	Fixes #1513: Correct filtering of custom field choices
This commit is contained in:
		@@ -19,17 +19,28 @@ class CustomFieldFilter(django_filters.Filter):
 | 
			
		||||
        super(CustomFieldFilter, self).__init__(*args, **kwargs)
 | 
			
		||||
 | 
			
		||||
    def filter(self, queryset, value):
 | 
			
		||||
 | 
			
		||||
        # Skip filter on empty value
 | 
			
		||||
        if not value.strip():
 | 
			
		||||
            return queryset
 | 
			
		||||
        # Treat 0 as None for Select fields
 | 
			
		||||
        try:
 | 
			
		||||
            if self.cf_type == CF_TYPE_SELECT and int(value) == 0:
 | 
			
		||||
                return queryset.exclude(
 | 
			
		||||
                    custom_field_values__field__name=self.name,
 | 
			
		||||
                )
 | 
			
		||||
        except ValueError:
 | 
			
		||||
            pass
 | 
			
		||||
 | 
			
		||||
        # Selection fields get special treatment (values must be integers)
 | 
			
		||||
        if self.cf_type == CF_TYPE_SELECT:
 | 
			
		||||
            try:
 | 
			
		||||
                # Treat 0 as None
 | 
			
		||||
                if int(value) == 0:
 | 
			
		||||
                    return queryset.exclude(
 | 
			
		||||
                        custom_field_values__field__name=self.name,
 | 
			
		||||
                    )
 | 
			
		||||
                # Match on exact CustomFieldChoice PK
 | 
			
		||||
                else:
 | 
			
		||||
                    return queryset.filter(
 | 
			
		||||
                        custom_field_values__field__name=self.name,
 | 
			
		||||
                        custom_field_values__serialized_value=value,
 | 
			
		||||
                    )
 | 
			
		||||
            except ValueError:
 | 
			
		||||
                return queryset.none()
 | 
			
		||||
 | 
			
		||||
        return queryset.filter(
 | 
			
		||||
            custom_field_values__field__name=self.name,
 | 
			
		||||
            custom_field_values__serialized_value__icontains=value,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user