Skip to content

Instantly share code, notes, and snippets.

@aljiwala
Created November 25, 2017 05:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aljiwala/7ac039f50dd5e79ac673ea68da2b69a2 to your computer and use it in GitHub Desktop.
Save aljiwala/7ac039f50dd5e79ac673ea68da2b69a2 to your computer and use it in GitHub Desktop.
Mixin to any view or viewset to get kwargs with lowercase values. Based on a `lookup_field` attribute.
from rest_framework.generics import get_object_or_404
class CaseInsensitiveLookupMixin(object):
"""
Apply this mixin to any view or viewset to get kwargs with lowercase
values. Based on a `lookup_field` attribute.
"""
def get_object(self):
queryset = self.get_queryset() # Get the base queryset
queryset = self.filter_queryset(queryset) # Apply any filter backends
filter = {self.lookup_field: self.kwargs[self.lookup_field]}
if isinstance(self.kwargs[self.lookup_field], str):
filter = {self.lookup_field: self.kwargs[self.lookup_field].lower()}
return get_object_or_404(queryset, **filter) # Lookup the object
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment