'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