diff --git a/core/apps/orders/filters/order.py b/core/apps/orders/filters/order.py index f30d909..7f782d7 100644 --- a/core/apps/orders/filters/order.py +++ b/core/apps/orders/filters/order.py @@ -1,3 +1,5 @@ +from django.db.models import Q + import django_filters from core.apps.orders.models.order import Order @@ -12,16 +14,32 @@ class OrderFilter(django_filters.FilterSet): ) project = django_filters.ModelMultipleChoiceFilter( field_name='project', - queryset=Project.objects.all() + queryset=Project.objects.all(), + method='filter_by_project_and_folder' ) project_folder = django_filters.ModelMultipleChoiceFilter( field_name='project_folder', - queryset=ProjectFolder.objects.all() + queryset=ProjectFolder.objects.all(), + method='filter_by_project_and_folder' ) - + class Meta: model = Order - fields = [ - 'wherehouse', 'project', 'project_folder', 'date', - ] - \ No newline at end of file + fields = ['wherehouse', 'project', 'project_folder', 'date'] + + def filter_by_project_and_folder(self, queryset, name, value): + project_ids = self.data.getlist('project') + folder_ids = self.data.getlist('project_folder') + + if project_ids and folder_ids: + return queryset.filter( + Q(project__in=project_ids) | Q(project_folder__in=folder_ids) + ) + + if project_ids: + return queryset.filter(project__in=project_ids) + + if folder_ids: + return queryset.filter(project_folder__in=folder_ids) + + return queryset \ No newline at end of file