Hello to everyone,
i have a viewset (ModelViewset) for a model in my views.py, and i would
like the list endpoint to list me things matching some parameters (but the
are optional). So i have built this mixin:

class MultipleFieldLookupMixin(object):
    """
    Apply this mixin to any view or viewset to get multiple field filtering
    based on a `lookup_fields` attribute, instead of the default single
field filtering.
    """
    def get_object(self):
        queryset = self.get_queryset()             # Get the base queryset
        queryset = self.filter_queryset(queryset)  # Apply any filter
backends
        filter = {}
        for field in self.lookup_fields:
            if self.kwargs[field] is not None: # Ignore empty fields.
                filter[field] = self.kwargs[field]
        obj = get_object_or_404(queryset, **filter)  # Lookup the object
        return obj


class UserView(MultipleFieldLookupMixin, viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    lookup_fields = ['username', 'pwd', 'token_confirm', 'email',
'token_cng_pwd']

This is what my view.py looks like.
However the list view doesn't filter object at all, so i am missing
something important.

Can anyone help me out or point me in the right direction?

Thanks a lot
Agnese Camellini

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CACXuh-Siku2%2BES0RxCDfWe3NVRTnt3%3DBToj2ZFYB%2BbT1sBVCBg%40mail.gmail.com.

Reply via email to