{"id":21173,"library":"djangorestframework-guardian","title":"Django REST Framework Guardian","description":"Provides django-guardian integration with Django REST Framework, enabling object-level permissions via DRF's permission system. Current version 0.4.0, updated 2025. Release cadence is low (last release years ago). Compatible with DRF 3.x and guardian 2.x.","status":"maintenance","version":"0.4.0","language":"python","source_language":"en","source_url":"https://github.com/rpkilby/django-rest-framework-guardian","tags":["django","rest-framework","guardian","object-permissions","authorization"],"install":[{"cmd":"pip install djangorestframework-guardian","lang":"bash","label":"Standard install"}],"dependencies":[{"reason":"Required; DRF integration.","package":"djangorestframework","optional":false},{"reason":"Required; provides object-level permissions.","package":"django-guardian","optional":false}],"imports":[{"note":"Direct guardian function is not a DRF filter class.","wrong":"from guardian.shortcuts import get_objects_for_user","symbol":"DjangoObjectPermissions","correct":"from rest_framework_guardian.filters import DjangoObjectPermissionsFilter"},{"note":"Missing '.filters' module spec.","wrong":"from rest_framework_guardian import DjangoObjectPermissionsFilter","symbol":"DjangoObjectPermissionsFilter","correct":"from rest_framework_guardian.filters import DjangoObjectPermissionsFilter"}],"quickstart":{"code":"from rest_framework import permissions\nfrom rest_framework_guardian.filters import DjangoObjectPermissionsFilter\nfrom rest_framework_guardian import mixins\n\nclass MyViewSet(mixins.ListModelMixin, mixins.CreateModelMixin, ...):\n    permission_classes = [permissions.IsAuthenticated, permissions.DjangoObjectPermissions]\n    filter_backends = [DjangoObjectPermissionsFilter]","lang":"python","description":"Enable object-level permissions in a DRF viewset by adding DjangoObjectPermissions to permission_classes and DjangoObjectPermissionsFilter to filter_backends."},"warnings":[{"fix":"Upgrade Python to 3.10+ and ensure Django>=3.2, DRF>=3.12.","message":"Version 0.4.0 requires Python >=3.10 and drops support for Django <3.2 and DRF <3.12.","severity":"breaking","affected_versions":"<0.4.0"},{"fix":"Ensure your model has object permissions assigned via guardian.","message":"DjangoObjectPermissionsFilter requires that view's queryset supports filtering by user permissions. For complex permission logic, override filter_queryset.","severity":"gotcha","affected_versions":"all"},{"fix":"Use filter_backends = [DjangoObjectPermissionsFilter] instead of mixins.","message":"The mixins module is experimental and may change. Prefer using DjangoObjectPermissionsFilter directly.","severity":"deprecated","affected_versions":"<=0.4.0"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Run 'pip install djangorestframework-guardian' and ensure django-guardian and djangorestframework are installed.","cause":"Library not installed or missing dependency.","error":"ModuleNotFoundError: No module named 'rest_framework_guardian'"},{"fix":"Add 'permissions.IsAuthenticated' to permission_classes before DjangoObjectPermissions.","cause":"Permission class requires request.user; often occurs when using DjangoObjectPermissions without authentication.","error":"AttributeError: 'NoneType' object has no attribute 'user'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}