|
2 | 2 | from datetime import datetime, timedelta |
3 | 3 |
|
4 | 4 | from django.core.exceptions import ImproperlyConfigured |
| 5 | +from django.contrib.postgres.fields import ArrayField |
5 | 6 | from django.db.models import Q, fields, FilteredRelation, Count |
6 | 7 | from django.http import JsonResponse |
7 | 8 | from django.utils import timezone |
@@ -228,6 +229,8 @@ def get_default_label(self): |
228 | 229 | return found_label[0] if found_label else default_value |
229 | 230 |
|
230 | 231 | def get_base_filter_query_for_parsed_value(self, request, filter_value): |
| 232 | + if isinstance(self.model_field, ArrayField): |
| 233 | + return Q(**{f"{self.field.filter_field}__contains": [filter_value]}) |
231 | 234 | return Q(**{self.field.filter_field: filter_value}) |
232 | 235 |
|
233 | 236 |
|
@@ -264,6 +267,11 @@ def __init__( |
264 | 267 | self.select_all_label = select_all_label |
265 | 268 |
|
266 | 269 | def get_base_filter_query_for_parsed_value(self, request, filter_value): |
| 270 | + if isinstance(self.model_field, ArrayField): |
| 271 | + q_objects = Q() |
| 272 | + for value in filter_value: |
| 273 | + q_objects |= Q(**{f"{self.field.filter_field}__contains": [value]}) |
| 274 | + return q_objects |
267 | 275 | return Q(**{f"{self.field.filter_field}__in": filter_value}) |
268 | 276 |
|
269 | 277 | def get_advanced_filter_operators(self): |
|
0 commit comments