'Queryset filter to filter response that exactly contains the value as substring in django views
I have created filters that filter API responses, if the response contains at least one letter in the value as substring, I need to create a filter to filter responses that exactly contain the value as a substring in Django views.
**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)
Example: if company_or_group is given as : "aaa" ,it returns results containing at least one 'a' but I need to filter that the company_or_group in the API response exactly containing "aaa" as a substring in that company_or_group field.
Solution 1:[1]
You can directly use without icontains for that:
queryset=queryset.filter(company_or_group=company_or_group)
Or iexact to case insensitivity:
queryset=queryset.filter(company_or_group__iexact=company_or_group)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | ruddra |
