aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/mixins.py
diff options
context:
space:
mode:
authorTom Christie2014-08-29 11:29:26 +0100
committerTom Christie2014-08-29 11:29:26 +0100
commite5e6329a222def3b0745f90fc55ee36de95ada83 (patch)
treed6e7703e5375d39709f9e57096a66e5d1225ee9f /rest_framework/mixins.py
parentb3bbf416707cf8c71861b0fd6e966a557acef412 (diff)
downloaddjango-rest-framework-e5e6329a222def3b0745f90fc55ee36de95ada83.tar.bz2
Remove `pk_url_field`, `slug_url_field`, `slug_field`.
Closes #1773.
Diffstat (limited to 'rest_framework/mixins.py')
-rw-r--r--rest_framework/mixins.py36
1 files changed, 7 insertions, 29 deletions
diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py
index dc4c9f35..ac59d979 100644
--- a/rest_framework/mixins.py
+++ b/rest_framework/mixins.py
@@ -12,10 +12,9 @@ from rest_framework import status
from rest_framework.response import Response
from rest_framework.request import clone_request
from rest_framework.settings import api_settings
-import warnings
-def _get_validation_exclusions(obj, pk=None, slug_field=None, lookup_field=None):
+def _get_validation_exclusions(obj, lookup_field=None):
"""
Given a model instance, and an optional pk and slug field,
return the full list of all other field names on that model.
@@ -23,23 +22,13 @@ def _get_validation_exclusions(obj, pk=None, slug_field=None, lookup_field=None)
For use when performing full_clean on a model instance,
so we only clean the required fields.
"""
- include = []
-
- if pk:
- # Deprecated
+ if lookup_field == 'pk':
pk_field = obj._meta.pk
while pk_field.rel:
pk_field = pk_field.rel.to._meta.pk
- include.append(pk_field.name)
-
- if slug_field:
- # Deprecated
- include.append(slug_field)
-
- if lookup_field and lookup_field != 'pk':
- include.append(lookup_field)
+ lookup_field = pk_field.name
- return [field.name for field in obj._meta.fields if field.name not in include]
+ return [field.name for field in obj._meta.fields if field.name != lookup_field]
class CreateModelMixin(object):
@@ -146,26 +135,15 @@ class UpdateModelMixin(object):
"""
Set any attributes on the object that are implicit in the request.
"""
- # pk and/or slug attributes are implicit in the URL.
lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
- lookup = self.kwargs.get(lookup_url_kwarg, None)
- pk = self.kwargs.get(self.pk_url_kwarg, None)
- slug = self.kwargs.get(self.slug_url_kwarg, None)
- slug_field = slug and self.slug_field or None
-
- if lookup:
- setattr(obj, self.lookup_field, lookup)
-
- if pk:
- setattr(obj, 'pk', pk)
+ lookup_value = self.kwargs[lookup_url_kwarg]
- if slug:
- setattr(obj, slug_field, slug)
+ setattr(obj, self.lookup_field, lookup_value)
# Ensure we clean the attributes so that we don't eg return integer
# pk using a string representation, as provided by the url conf kwarg.
if hasattr(obj, 'full_clean'):
- exclude = _get_validation_exclusions(obj, pk, slug_field, self.lookup_field)
+ exclude = _get_validation_exclusions(obj, self.lookup_field)
obj.full_clean(exclude)