aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-12-19 14:39:11 -0800
committerTom Christie2012-12-19 14:39:11 -0800
commit46b313315a15c3fe4fb8a14b174920ae715c2848 (patch)
treefc86a5a6bae9c8fe9724435de076257c9012b588
parentc29b08ad43c8de5f295176eaf0270427f3a737f3 (diff)
parent262d9c248918d1e9a2e6ee8008aca94e2e23dd82 (diff)
downloaddjango-rest-framework-46b313315a15c3fe4fb8a14b174920ae715c2848.tar.bz2
Merge pull request #510 from joual/master
Fixes #509
-rw-r--r--rest_framework/fields.py2
-rw-r--r--rest_framework/tests/models.py4
-rw-r--r--rest_framework/tests/serializer.py13
3 files changed, 17 insertions, 2 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py
index 2060e3e7..f582a681 100644
--- a/rest_framework/fields.py
+++ b/rest_framework/fields.py
@@ -796,7 +796,7 @@ class ChoiceField(WritableField):
if value == smart_unicode(k2):
return True
else:
- if value == smart_unicode(k):
+ if value == smart_unicode(k) or value == k:
return True
return False
diff --git a/rest_framework/tests/models.py b/rest_framework/tests/models.py
index e2b287d0..1b1def30 100644
--- a/rest_framework/tests/models.py
+++ b/rest_framework/tests/models.py
@@ -51,6 +51,10 @@ class RESTFrameworkModel(models.Model):
abstract = True
+class HasPositiveIntegerAsChoice(RESTFrameworkModel):
+ some_choices = ((1,'A'),(2,'B'),(3,'C'))
+ some_integer = models.PositiveIntegerField(choices=some_choices)
+
class Anchor(RESTFrameworkModel):
text = models.CharField(max_length=100, default='anchor')
diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py
index 780177aa..7f2c27b0 100644
--- a/rest_framework/tests/serializer.py
+++ b/rest_framework/tests/serializer.py
@@ -2,7 +2,7 @@ import datetime
import pickle
from django.test import TestCase
from rest_framework import serializers
-from rest_framework.tests.models import (Album, ActionItem, Anchor, BasicModel,
+from rest_framework.tests.models import (HasPositiveIntegerAsChoice, Album, ActionItem, Anchor, BasicModel,
BlankFieldModel, BlogPost, Book, CallableDefaultValueModel, DefaultValueModel,
ManyToManyModel, Person, ReadOnlyManyToManyModel, Photo)
@@ -69,6 +69,11 @@ class AlbumsSerializer(serializers.ModelSerializer):
model = Album
fields = ['title'] # lists are also valid options
+class PositiveIntegerAsChoiceSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = HasPositiveIntegerAsChoice
+ fields = ['some_integer']
+
class BasicTests(TestCase):
def setUp(self):
@@ -285,6 +290,12 @@ class ValidationTests(TestCase):
self.assertEquals(serializer.errors, {'info': [u'Ensure this value has at most 12 characters (it has 13).']})
+class PositiveIntegerAsChoiceTests(TestCase):
+ def test_positive_integer_in_json_is_correctly_parsed(self):
+ data = {'some_integer':1}
+ serializer = PositiveIntegerAsChoiceSerializer(data=data)
+ self.assertEquals(serializer.is_valid(), True)
+
class ModelValidationTests(TestCase):
def test_validate_unique(self):
"""