diff options
| author | Tom Christie | 2014-08-29 11:29:26 +0100 | 
|---|---|---|
| committer | Tom Christie | 2014-08-29 11:29:26 +0100 | 
| commit | e5e6329a222def3b0745f90fc55ee36de95ada83 (patch) | |
| tree | d6e7703e5375d39709f9e57096a66e5d1225ee9f /rest_framework/mixins.py | |
| parent | b3bbf416707cf8c71861b0fd6e966a557acef412 (diff) | |
| download | django-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.py | 36 | 
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) | 
