@@ -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',
|
||||
]
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user