@@ -77,7 +77,7 @@ class DjangoModelPermissions(BasePermission):
7777 `add`/`change`/`delete` permissions on the model.
7878
7979 This permission can only be applied against view classes that
80- provide a `.model` or `. queryset` attribute.
80+ provide a `.queryset` attribute.
8181 """
8282
8383 # Map methods into required permission codes.
@@ -107,24 +107,19 @@ def get_required_permissions(self, method, model_cls):
107107 return [perm % kwargs for perm in self .perms_map [method ]]
108108
109109 def has_permission (self , request , view ):
110- # Note that `.model` attribute on views is deprecated, although we
111- # enforce the deprecation on the view `get_serializer_class()` and
112- # `get_queryset()` methods, rather than here.
113- model_cls = getattr (view , 'model' , None )
114110 queryset = getattr (view , 'queryset' , None )
115111
116- if model_cls is None and queryset is not None :
117- model_cls = queryset .model
118-
119112 # Workaround to ensure DjangoModelPermissions are not applied
120113 # to the root view when using DefaultRouter.
121- if model_cls is None and getattr (view , '_ignore_model_permissions' , False ):
114+ if queryset is None and getattr (view , '_ignore_model_permissions' , False ):
122115 return True
123116
124- assert model_cls , ('Cannot apply DjangoModelPermissions on a view that'
125- ' does not have `.model` or `.queryset` property.' )
117+ assert queryset , (
118+ 'Cannot apply DjangoModelPermissions on a view that '
119+ 'does not have `.queryset` property.'
120+ )
126121
127- perms = self .get_required_permissions (request .method , model_cls )
122+ perms = self .get_required_permissions (request .method , queryset . model )
128123
129124 return (
130125 request .user and
@@ -150,7 +145,7 @@ class DjangoObjectPermissions(DjangoModelPermissions):
150145 `add`/`change`/`delete` permissions on the object using .has_perms.
151146
152147 This permission can only be applied against view classes that
153- provide a `.model` or `. queryset` attribute.
148+ provide a `.queryset` attribute.
154149 """
155150
156151 perms_map = {
@@ -171,14 +166,10 @@ def get_required_object_permissions(self, method, model_cls):
171166 return [perm % kwargs for perm in self .perms_map [method ]]
172167
173168 def has_object_permission (self , request , view , obj ):
174- model_cls = getattr (view , 'model' , None )
175- queryset = getattr (view , 'queryset' , None )
176-
177- if model_cls is None and queryset is not None :
178- model_cls = queryset .model
169+ model_cls = view .queryset .model
170+ user = request .user
179171
180172 perms = self .get_required_object_permissions (request .method , model_cls )
181- user = request .user
182173
183174 if not user .has_perms (perms , obj ):
184175 # If the user does not have permissions we need to determine if
0 commit comments