This commit is contained in:
André Ericson 2015-07-14 12:01:12 +00:00
commit 823ecdfef0
3 changed files with 27 additions and 2 deletions

View File

@ -111,10 +111,10 @@ class RelatedField(Field):
def choices(self):
return OrderedDict([
(
six.text_type(self.to_representation(item)),
self.to_representation(item),
six.text_type(item)
)
for item in self.get_queryset()
for item in self.get_queryset().all()
])

View File

@ -5,6 +5,7 @@ from django.core.exceptions import ImproperlyConfigured
from django.utils.datastructures import MultiValueDict
from rest_framework import serializers
from rest_framework.compat import OrderedDict
from rest_framework.fields import empty
from rest_framework.test import APISimpleTestCase
@ -58,6 +59,13 @@ class TestPrimaryKeyRelatedField(APISimpleTestCase):
instance = field.to_internal_value(self.instance.pk)
assert instance is self.instance
def test_choices(self):
self.assertEquals(
OrderedDict([(1, '<MockObject name=foo, pk=1>'),
(2, '<MockObject name=bar, pk=2>'),
(3, '<MockObject name=baz, pk=3>')]),
self.field.choices)
class TestProxiedPrimaryKeyRelatedField(APISimpleTestCase):
def setUp(self):
@ -206,3 +214,17 @@ class TestManyRelatedField(APISimpleTestCase):
mvd = MultiValueDict({'baz': ['bar1', 'bar2']})
assert empty == self.field.get_value(mvd)
def test_choices(self):
queryset = MockQueryset([
MockObject(pk=1, name='foo'),
MockObject(pk=2, name='bar'),
MockObject(pk=3, name='baz')
])
field = serializers.ManyRelatedField(
child_relation=serializers.PrimaryKeyRelatedField(queryset=queryset))
self.assertEquals(
OrderedDict([(1, '<MockObject name=foo, pk=1>'),
(2, '<MockObject name=bar, pk=2>'),
(3, '<MockObject name=baz, pk=3>')]),
field.choices)

View File

@ -53,6 +53,9 @@ class MockQueryset(object):
return item
raise ObjectDoesNotExist()
def all(self):
return self.items
class BadType(object):
"""