* Filter Checklist by multiple status values

This commit is contained in:
Phil Zhitnikov 2023-11-23 02:13:05 +04:00
parent aa3aa00ae1
commit a4f8dfc27c
2 changed files with 11 additions and 3 deletions

View File

@ -1,6 +1,6 @@
from django_filters import rest_framework as filters
from .models import Gift
from .models import Checklist, Gift
class GiftFilter(filters.FilterSet):
@ -12,3 +12,11 @@ class GiftFilter(filters.FilterSet):
def filter_for_price(self, queryset, name, value):
return queryset.filter(min_price__lte=value)
class ChecklistFilter(filters.FilterSet):
status = filters.MultipleChoiceFilter(choices=Checklist.Status.CHOICES)
class Meta:
model = Checklist
fields = ('status',)

View File

@ -14,7 +14,7 @@ from rest_framework.response import Response
from external_api.cdek import CDEKClient
from external_api.poizon import PoizonClient
from store.exceptions import CRMException
from store.filters import GiftFilter
from store.filters import GiftFilter, ChecklistFilter
from store.models import Checklist, GlobalSettings, Category, PaymentMethod, Promocode, Gift
from store.serializers import (ChecklistSerializer, CategorySerializer, CategoryFullSerializer,
PaymentMethodSerializer, GlobalSettingsSerializer,
@ -38,7 +38,7 @@ class ChecklistAPI(mixins.ListModelMixin,
DisablePermissionsMixin):
serializer_class = ChecklistSerializer
lookup_field = 'id'
filterset_fields = ['status', ]
filterset_class = ChecklistFilter
filter_backends = [DjangoFilterBackend, SearchFilter]
search_fields = ['id', 'poizon_tracking', 'buyer_phone']
# TODO: search by full_price