Фильтр queryset для фильтрации ответа, который точно содержит значение в виде подстроки в представлениях django
Я создал фильтры, которые фильтруют ответы API, если ответ содержит хотя бы одну букву в значении как подстроку, мне нужно создать фильтр для фильтрации ответов, которые точно содержат значение как подстроку в представлениях Django.
**Existing code in views.py**
class UserSearchFilterAPIView(APIView):
def get(self,request,*args,**kargs):
queryset=Joineduserdatanew.objects.all()
#Custom filter
surname=self.request.query_params.get('surname',None)
firstname=self.request.query_params.get('firstname',None)
login=self.request.query_params.get('login',None)
racfid=self.request.query_params.get('racfid',None)
assignee=self.request.query_params.get('assignee',None)
phonenumber=self.request.query_params.get('phonenumber',None)
company_or_group=self.request.query_params.get('company_or_group',None)
email=self.request.query_params.get('email',None)
segment=self.request.query_params.get('segment',None)
if surname:
queryset=queryset.filter(surname__icontains=surname)
if firstname:
queryset=queryset.filter(firstname__icontains=firstname)
if login:
queryset=queryset.filter(login__icontains=login)
if racfid:
queryset=queryset.filter(racfid__icontains=racfid)
if assignee:
queryset=queryset.filter(assignee__icontains=assignee)
if phonenumber:
queryset=queryset.filter(phonenumber__icontains=phonenumber)
if company_or_group:
queryset=queryset.filter(company_or_group__icontains=company_or_group)
if email:
queryset=queryset.filter(email__icontains=email)
if segment:
queryset=queryset.filter(segment__icontains=segment)
serializer=JoineduserdatanewSerialization(queryset,many=True)
return Response(serializer.data)
Пример: если компания_или_группа задана как : "aaa", он возвращает результаты, содержащие по крайней мере одно 'a', но мне нужно отфильтровать, что компания_or_group в ответе API точно содержит "aaa" как подстроку в поле company_or_group.
Вы можете напрямую использовать без icontains для этого:
queryset=queryset.filter(company_or_group=company_or_group)
Или iexact к нечувствительности регистра:
queryset=queryset.filter(company_or_group__iexact=company_or_group)