mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-08 06:14:47 +03:00
Fixed Django1.9 compatibility and added test.
This commit is contained in:
parent
21839e45c6
commit
dae5a5ce43
|
@ -1132,7 +1132,7 @@ class ModelSerializer(Serializer):
|
|||
|
||||
to_field = field_kwargs.pop('to_field', None)
|
||||
if relation_info.reverse:
|
||||
if to_field and not relation_info.related_model_field.related_field.primary_key:
|
||||
if to_field and not relation_info.related_model_field.related_fields[0][1].primary_key:
|
||||
field_kwargs['slug_field'] = to_field
|
||||
field_class = self.serializer_related_to_field
|
||||
else:
|
||||
|
|
|
@ -899,3 +899,38 @@ class TestDecimalFieldMappings(TestCase):
|
|||
serializer = TestSerializer()
|
||||
|
||||
assert len(serializer.fields['decimal_field'].validators) == 2
|
||||
|
||||
|
||||
class Issue3674Test(TestCase):
|
||||
def test_nonPK_foreignkey_model_serializer(self):
|
||||
class TestParentModel(models.Model):
|
||||
title = models.CharField(max_length=64)
|
||||
|
||||
class TestChildModel(models.Model):
|
||||
parent = models.ForeignKey(TestParentModel, related_name='children')
|
||||
value = models.CharField(primary_key=True, max_length=64)
|
||||
|
||||
class TestChildModelSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = TestChildModel
|
||||
fields = ('value', 'parent')
|
||||
|
||||
class TestParentModelSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = TestParentModel
|
||||
fields = ('id', 'title', 'children')
|
||||
|
||||
parent_expected = dedent("""
|
||||
TestParentModelSerializer():
|
||||
id = IntegerField(label='ID', read_only=True)
|
||||
title = CharField(max_length=64)
|
||||
children = PrimaryKeyRelatedField(many=True, queryset=TestChildModel.objects.all())
|
||||
""")
|
||||
self.assertEqual(unicode_repr(TestParentModelSerializer()), parent_expected)
|
||||
|
||||
child_expected = dedent("""
|
||||
TestChildModelSerializer():
|
||||
value = CharField(max_length=64, validators=[<UniqueValidator(queryset=TestChildModel.objects.all())>])
|
||||
parent = PrimaryKeyRelatedField(queryset=TestParentModel.objects.all())
|
||||
""")
|
||||
self.assertEqual(unicode_repr(TestChildModelSerializer()), child_expected)
|
||||
|
|
Loading…
Reference in New Issue
Block a user