This commit is contained in:
Roarster 2012-11-10 07:36:43 -08:00
commit fae6964f74
3 changed files with 34 additions and 2 deletions

View File

@ -328,7 +328,10 @@ class RelatedField(WritableField):
return
value = data.get(field_name)
into[(self.source or field_name)] = self.from_native(value)
if self.blank and value is None:
into[(self.source or field_name)] = None
else:
into[(self.source or field_name)] = self.from_native(value)
class ManyRelatedMixin(object):

View File

@ -149,3 +149,8 @@ class Person(RESTFrameworkModel):
# Model for issue #324
class BlankFieldModel(RESTFrameworkModel):
title = models.CharField(max_length=100, blank=True)
class BlankRelatedFieldModel(RESTFrameworkModel):
blank_field = models.OneToOneField('BasicModel', blank=True, null=True)

View File

@ -3,7 +3,7 @@ from django.test import TestCase
from rest_framework import serializers
from rest_framework.tests.models import (ActionItem, Anchor, BasicModel,
BlankFieldModel, BlogPost, CallableDefaultValueModel, DefaultValueModel,
ManyToManyModel, Person, ReadOnlyManyToManyModel)
ManyToManyModel, Person, ReadOnlyManyToManyModel, BlankRelatedFieldModel)
class SubComment(object):
@ -536,3 +536,27 @@ class BlankFieldTests(TestCase):
"""
serializer = self.not_blank_model_serializer_class(data=self.data)
self.assertEquals(serializer.is_valid(), False)
class BlankRelatedFieldModelTests(TestCase):
def setUp(self):
class BlankInlineRelatedFieldModelSerializer(serializers.ModelSerializer):
blank_field = serializers.PrimaryKeyRelatedField(blank=True, queryset=BasicModel.objects.all())
class Meta:
model = BlankRelatedFieldModel
class BlankRelatedFieldModelSerializer(serializers.ModelSerializer):
class Meta:
model = BlankRelatedFieldModel
self.inline_serializer_class = BlankInlineRelatedFieldModelSerializer
self.serializer_class = BlankRelatedFieldModelSerializer
self.data = {'blank_field': None}
def test_create_inline_blank_related_field(self):
serializer = self.inline_serializer_class(self.data)
self.assertEquals(serializer.is_valid(), True)
def test_create_blank_related_field(self):
serializer = self.serializer_class(self.data)
self.assertEquals(serializer.is_valid(), True)