Merge pull request #3981 from Inventorum/inventorum

[2.4] Fixes for Django 1.9
This commit is contained in:
Xavier Ordoquy 2016-03-22 19:45:17 +01:00
commit 4f252086df
5 changed files with 20 additions and 4 deletions

View File

@ -22,7 +22,8 @@ env:
- TOX_ENV=py2.6-django1.4
install:
- "pip install tox --download-cache $HOME/.pip-cache"
# Virtualenv < 14 is required to keep the Python 3.2 builds running.
- "pip install tox 'virtualenv<14' --download-cache $HOME/.pip-cache"
script:
- tox -e $TOX_ENV

View File

@ -8,7 +8,7 @@ ______ _____ _____ _____ __
"""
__title__ = 'Django REST framework'
__version__ = '2.4.8'
__version__ = '2.4.9'
__author__ = 'Tom Christie'
__license__ = 'BSD 2-Clause'
__copyright__ = 'Copyright 2011-2014 Tom Christie'

View File

@ -73,6 +73,12 @@ except ImportError:
from collections import UserDict
from collections import MutableMapping as DictMixin
# http responses move in Python 3
try:
from httplib import responses
except ImportError:
from http.client import responses
# Try to import PIL in either of the two ways it can end up installed.
try:
from PIL import Image

View File

@ -6,9 +6,9 @@ The appropriate renderer is called during Django's template response rendering.
"""
from __future__ import unicode_literals
import django
from django.core.handlers.wsgi import STATUS_CODE_TEXT
from django.template.response import SimpleTemplateResponse
from django.utils import six
from rest_framework.compat import responses
class Response(SimpleTemplateResponse):
@ -81,7 +81,7 @@ class Response(SimpleTemplateResponse):
"""
# TODO: Deprecate and use a template tag instead
# TODO: Status code text for RFC 6585 status codes
return STATUS_CODE_TEXT.get(self.status_code, '')
return responses.get(self.status_code, '')
def __getstate__(self):
"""

View File

@ -15,6 +15,9 @@ import copy
import datetime
import inspect
import types
import django
from decimal import Decimal
from django.core.paginator import Page
from django.db import models
@ -1079,6 +1082,12 @@ class ModelSerializer(Serializer):
fk_field = obj._meta.get_field_by_name(accessor_name)[0].field.name
setattr(related, fk_field, obj)
self.save_object(related)
elif isinstance(related, list):
# Many to One/Many
if django.VERSION >= (1, 9):
getattr(obj, accessor_name).add(*related, bulk=False)
else:
getattr(obj, accessor_name).add(*related)
else:
# Reverse FK or reverse one-one
setattr(obj, accessor_name, related)